vibedoc 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +39 -11
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/chat/page/app-paths-manifest.json +3 -0
  11. package/.next/server/app/(app)/chat/page/build-manifest.json +20 -0
  12. package/.next/server/app/(app)/chat/page/next-font-manifest.json +11 -0
  13. package/.next/server/app/(app)/chat/page/react-loadable-manifest.json +1 -0
  14. package/.next/server/app/(app)/chat/page/server-reference-manifest.json +4 -0
  15. package/.next/server/app/(app)/chat/page.js +15 -0
  16. package/.next/server/app/(app)/chat/page.js.map +5 -0
  17. package/.next/server/app/(app)/chat/page.js.nft.json +1 -0
  18. package/.next/server/app/(app)/chat/page_client-reference-manifest.js +3 -0
  19. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  20. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
  22. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  24. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  25. package/.next/server/app/(app)/roadmap/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/roadmap/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  28. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  29. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/_global-error.html +1 -1
  32. package/.next/server/app/_global-error.rsc +1 -1
  33. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  34. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  36. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  37. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app/_not-found.html +1 -1
  39. package/.next/server/app/_not-found.rsc +2 -2
  40. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  41. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  42. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  43. package/.next/server/app/activity.html +1 -1
  44. package/.next/server/app/activity.rsc +22 -23
  45. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +9 -10
  46. package/.next/server/app/activity.segments/_full.segment.rsc +22 -23
  47. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  48. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  49. package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  50. package/.next/server/app/api/chat/route.js.nft.json +1 -1
  51. package/.next/server/app/api/context/route.js.nft.json +1 -1
  52. package/.next/server/app/api/conversations/route/app-paths-manifest.json +3 -0
  53. package/.next/server/app/api/conversations/route/build-manifest.json +12 -0
  54. package/.next/server/app/api/conversations/route/server-reference-manifest.json +4 -0
  55. package/.next/server/app/api/conversations/route.js +9 -0
  56. package/.next/server/app/api/conversations/route.js.map +5 -0
  57. package/.next/server/app/api/conversations/route.js.nft.json +1 -0
  58. package/.next/server/app/api/conversations/route_client-reference-manifest.js +3 -0
  59. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  60. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  61. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  62. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  63. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  64. package/.next/server/app/api/plan/apply/route.js.nft.json +1 -1
  65. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  66. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  67. package/.next/server/app/api/roadmap/create/route.js.nft.json +1 -1
  68. package/.next/server/app/api/roadmap/delete/route.js.nft.json +1 -1
  69. package/.next/server/app/api/roadmap/generate/route.js.nft.json +1 -1
  70. package/.next/server/app/api/roadmap/layout/route.js.nft.json +1 -1
  71. package/.next/server/app/api/roadmap/route.js.nft.json +1 -1
  72. package/.next/server/app/api/roadmap/update/route.js.nft.json +1 -1
  73. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  74. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  75. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  76. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  77. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  78. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -1
  79. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  80. package/.next/server/app/board.html +1 -1
  81. package/.next/server/app/board.rsc +22 -23
  82. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +9 -10
  83. package/.next/server/app/board.segments/_full.segment.rsc +22 -23
  84. package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  85. package/.next/server/app/chat.html +1 -0
  86. package/.next/server/app/chat.meta +31 -0
  87. package/.next/server/app/chat.rsc +29 -0
  88. package/.next/server/app/chat.segments/!KGFwcCk/chat/__PAGE__.segment.rsc +31 -0
  89. package/.next/server/app/chat.segments/_full.segment.rsc +29 -0
  90. package/.next/server/app/chat.segments/_tree.segment.rsc +4 -0
  91. package/.next/server/app/docs.html +1 -1
  92. package/.next/server/app/docs.rsc +22 -27
  93. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +6 -6
  94. package/.next/server/app/docs.segments/_full.segment.rsc +22 -27
  95. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  96. package/.next/server/app/explorer.html +1 -1
  97. package/.next/server/app/explorer.rsc +22 -23
  98. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +9 -10
  99. package/.next/server/app/explorer.segments/_full.segment.rsc +22 -23
  100. package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
  101. package/.next/server/app/index.html +1 -1
  102. package/.next/server/app/index.rsc +2 -2
  103. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  104. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  105. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  106. package/.next/server/app/memory.html +1 -1
  107. package/.next/server/app/memory.rsc +22 -23
  108. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +9 -10
  109. package/.next/server/app/memory.segments/_full.segment.rsc +22 -23
  110. package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  111. package/.next/server/app/page.js.nft.json +1 -1
  112. package/.next/server/app/page_client-reference-manifest.js +1 -1
  113. package/.next/server/app/roadmap.html +1 -1
  114. package/.next/server/app/roadmap.rsc +22 -26
  115. package/.next/server/app/roadmap.segments/!KGFwcCk/roadmap/__PAGE__.segment.rsc +9 -11
  116. package/.next/server/app/roadmap.segments/_full.segment.rsc +22 -26
  117. package/.next/server/app/roadmap.segments/_tree.segment.rsc +2 -2
  118. package/.next/server/app/settings.html +1 -1
  119. package/.next/server/app/settings.rsc +22 -23
  120. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +9 -10
  121. package/.next/server/app/settings.segments/_full.segment.rsc +22 -23
  122. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  123. package/.next/server/app/setup.html +1 -1
  124. package/.next/server/app/setup.rsc +22 -23
  125. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +9 -10
  126. package/.next/server/app/setup.segments/_full.segment.rsc +22 -23
  127. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  128. package/.next/server/app-paths-manifest.json +2 -0
  129. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js +3 -0
  130. package/.next/server/chunks/11mp_@anthropic-ai_sdk_1htgzmb._.js.map +1 -0
  131. package/.next/server/chunks/11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js +3 -0
  132. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js +4 -4
  133. package/.next/server/chunks/[root-of-the-server]__1613hjb._.js.map +1 -1
  134. package/.next/server/chunks/[root-of-the-server]__1jxu2x9._.js +3 -0
  135. package/.next/server/chunks/[root-of-the-server]__1jxu2x9._.js.map +1 -0
  136. package/.next/server/chunks/_1b5fqxy._.js +1 -1
  137. package/.next/server/chunks/_1b5fqxy._.js.map +1 -1
  138. package/.next/server/chunks/_next-internal_server_app_api_conversations_route_actions_1-pu7gs.js +3 -0
  139. package/.next/server/chunks/ssr/{0_nd_mermaid_dist_mermaid_core_mjs_10jvzv6._.js → 0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js} +2 -2
  140. package/.next/server/chunks/ssr/{1u84_katex_dist_katex_mjs_05prlqa._.js → 1u84_katex_dist_katex_mjs_1z0p1bs._.js} +1 -1
  141. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js +3 -0
  142. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0cvmffy._.js.map +1 -0
  143. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js +3 -0
  144. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0u3jxas._.js.map +1 -0
  145. package/.next/server/chunks/ssr/[root-of-the-server]__0xt_0w2._.js.map +1 -1
  146. package/.next/server/chunks/ssr/[root-of-the-server]__11lfnu0._.js +3 -0
  147. package/.next/server/chunks/ssr/[root-of-the-server]__11lfnu0._.js.map +1 -0
  148. package/.next/server/chunks/ssr/_059qmur._.js +3 -0
  149. package/.next/server/chunks/ssr/_059qmur._.js.map +1 -0
  150. package/.next/server/chunks/ssr/_081irea._.js +3 -0
  151. package/.next/server/chunks/ssr/_081irea._.js.map +1 -0
  152. package/.next/server/chunks/ssr/_0d8t8l4._.js +3 -0
  153. package/.next/server/chunks/ssr/_0d8t8l4._.js.map +1 -0
  154. package/.next/server/chunks/ssr/_0dyvcdg._.js +3 -0
  155. package/.next/server/chunks/ssr/_0dyvcdg._.js.map +1 -0
  156. package/.next/server/chunks/ssr/_1-ghqy4._.js +3 -0
  157. package/.next/server/chunks/ssr/_1-ghqy4._.js.map +1 -0
  158. package/.next/server/chunks/ssr/_17jy5db._.js +3 -0
  159. package/.next/server/chunks/ssr/_17jy5db._.js.map +1 -0
  160. package/.next/server/chunks/ssr/_1c95ems._.js +1 -1
  161. package/.next/server/chunks/ssr/_1c95ems._.js.map +1 -1
  162. package/.next/server/chunks/ssr/_1dllfz5._.js +4 -0
  163. package/.next/server/chunks/ssr/_1dllfz5._.js.map +1 -0
  164. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_chat_page_actions_0g4tbzt.js +3 -0
  165. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js +3 -0
  166. package/.next/server/chunks/ssr/node_modules__pnpm_006_c8z._.js.map +1 -0
  167. package/.next/server/chunks/ssr/{node_modules__pnpm_1kngagu._.js → node_modules__pnpm_0286-tg._.js} +1 -1
  168. package/.next/server/chunks/ssr/{node_modules__pnpm_1ad2q27._.js → node_modules__pnpm_04khl_s._.js} +1 -1
  169. package/.next/server/chunks/ssr/{node_modules__pnpm_0ns_6dd._.js → node_modules__pnpm_07t_e8c._.js} +1 -1
  170. package/.next/server/chunks/ssr/{node_modules__pnpm_0baie09._.js → node_modules__pnpm_08sqeu2._.js} +1 -1
  171. package/.next/server/chunks/ssr/{node_modules__pnpm_1jfqun_._.js → node_modules__pnpm_09_i2jk._.js} +1 -1
  172. package/.next/server/chunks/ssr/node_modules__pnpm_09_i2jk._.js.map +1 -0
  173. package/.next/server/chunks/ssr/{node_modules__pnpm_1o3_0-n._.js → node_modules__pnpm_0a9b2ei._.js} +1 -1
  174. package/.next/server/chunks/ssr/{node_modules__pnpm_0e15nhj._.js → node_modules__pnpm_0ah02mu._.js} +1 -1
  175. package/.next/server/chunks/ssr/{node_modules__pnpm_20tdqv_._.js → node_modules__pnpm_0cj8ryj._.js} +1 -1
  176. package/.next/server/chunks/ssr/{node_modules__pnpm_0wnlgm-._.js → node_modules__pnpm_0dwi7mu._.js} +2 -2
  177. package/.next/server/chunks/ssr/node_modules__pnpm_0dwi7mu._.js.map +1 -0
  178. package/.next/server/chunks/ssr/{node_modules__pnpm_1h890n6._.js → node_modules__pnpm_0f77_ng._.js} +1 -1
  179. package/.next/server/chunks/ssr/{node_modules__pnpm_1u8p2h3._.js → node_modules__pnpm_0fd3pr1._.js} +2 -2
  180. package/.next/server/chunks/ssr/{node_modules__pnpm_1zu-9we._.js → node_modules__pnpm_0gifu-u._.js} +2 -2
  181. package/.next/server/chunks/ssr/{node_modules__pnpm_1_o0jyk._.js → node_modules__pnpm_0jpv2b6._.js} +2 -2
  182. package/.next/server/chunks/ssr/{node_modules__pnpm_1f3lm9p._.js → node_modules__pnpm_0og06fy._.js} +1 -1
  183. package/.next/server/chunks/ssr/{node_modules__pnpm_12s6q4d._.js → node_modules__pnpm_0qc3gsk._.js} +1 -1
  184. package/.next/server/chunks/ssr/{node_modules__pnpm_0e3u5g-._.js → node_modules__pnpm_0ts89ne._.js} +1 -1
  185. package/.next/server/chunks/ssr/{node_modules__pnpm_1moe8b6._.js → node_modules__pnpm_0ttvopp._.js} +1 -1
  186. package/.next/server/chunks/ssr/{node_modules__pnpm_1ly58kw._.js → node_modules__pnpm_0u3u82f._.js} +1 -1
  187. package/.next/server/chunks/ssr/{node_modules__pnpm_1hw4h9e._.js → node_modules__pnpm_0y35hs4._.js} +1 -1
  188. package/.next/server/chunks/ssr/{node_modules__pnpm_0jhh7p5._.js → node_modules__pnpm_104pzhc._.js} +2 -2
  189. package/.next/server/chunks/ssr/{node_modules__pnpm_1gqkoe3._.js → node_modules__pnpm_195j8p_._.js} +1 -1
  190. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js +3 -0
  191. package/.next/server/chunks/ssr/node_modules__pnpm_1kcnkjs._.js.map +1 -0
  192. package/.next/server/chunks/ssr/{node_modules__pnpm_0i0uccx._.js → node_modules__pnpm_1l8k8w1._.js} +1 -1
  193. package/.next/server/chunks/ssr/{node_modules__pnpm_0rd-a9g._.js → node_modules__pnpm_1w0f1m5._.js} +1 -1
  194. package/.next/server/chunks/ssr/{node_modules__pnpm_1gtgu48._.js → node_modules__pnpm_1woddr6._.js} +2 -2
  195. package/.next/server/chunks/ssr/{node_modules__pnpm_0_z3_bl._.js → node_modules__pnpm_1x0t5_z._.js} +1 -1
  196. package/.next/server/chunks/ssr/{node_modules__pnpm_07_kgbe._.js → node_modules__pnpm_1xzf8g_._.js} +1 -1
  197. package/.next/server/chunks/ssr/{node_modules__pnpm_08em703._.js → node_modules__pnpm_1yq90z7._.js} +1 -1
  198. package/.next/server/chunks/ssr/node_modules__pnpm_1yq90z7._.js.map +1 -0
  199. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js +3 -0
  200. package/.next/server/chunks/ssr/src_app_(app)_chat_page_tsx_0c3e4l4._.js.map +1 -0
  201. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js +3 -0
  202. package/.next/server/chunks/ssr/src_app_(app)_layout_tsx_1yu5hom._.js.map +1 -0
  203. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js +5 -0
  204. package/.next/server/chunks/ssr/src_app_(app)_roadmap_page_tsx_0vcq3jr._.js.map +1 -0
  205. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js +2 -2
  206. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_0zevtee._.js.map +1 -1
  207. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js +5 -0
  208. package/.next/server/chunks/ssr/src_context_ChatContext_tsx_0lowp8p._.js.map +1 -0
  209. package/.next/server/chunks/ssr/{_1wf14_u._.js → src_lib_templates_index_ts_1s61uk7._.js} +2 -2
  210. package/.next/server/chunks/ssr/{_1wf14_u._.js.map → src_lib_templates_index_ts_1s61uk7._.js.map} +1 -1
  211. package/.next/server/middleware-build-manifest.js +3 -3
  212. package/.next/server/next-font-manifest.js +1 -1
  213. package/.next/server/next-font-manifest.json +4 -0
  214. package/.next/server/pages/404.html +1 -1
  215. package/.next/server/pages/500.html +1 -1
  216. package/.next/server/prefetch-hints.json +19 -0
  217. package/.next/server/server-reference-manifest.js +1 -1
  218. package/.next/server/server-reference-manifest.json +1 -1
  219. package/.next/static/chunks/050mq8l4e1ubn.js +1 -0
  220. package/.next/static/chunks/098le48845_fg.js +3 -0
  221. package/.next/static/chunks/0cw4-ebkoufdc.js +1 -0
  222. package/.next/static/chunks/0feo-go1w5nct.js +1 -0
  223. package/.next/static/chunks/14sefb904pl64.js +21 -0
  224. package/.next/static/chunks/1fer-wulyrjrs.js +3 -0
  225. package/.next/static/chunks/1o7b1x4umy8a6.js +1 -0
  226. package/.next/static/chunks/1q_io1j58aukw.js +1 -0
  227. package/.next/static/chunks/1t-cgh4477hfo.js +1 -0
  228. package/.next/static/chunks/1u-1po1qesc9f.js +1 -0
  229. package/.next/static/chunks/1u5kegkgm0xoz.js +1 -0
  230. package/.next/static/chunks/24ygzsgd-moqy.js +1 -0
  231. package/.next/static/chunks/26folxgplfa9t.js +68 -0
  232. package/.next/static/chunks/2ocixvjhv34_3.js +1 -0
  233. package/.next/static/chunks/3_lsdgxa-h7ma.css +10 -0
  234. package/.next/static/chunks/3rmv-sb9w9i3e.js +1 -0
  235. package/.next/static/chunks/3ttzomivj48jh.js +2 -0
  236. package/README.md +1 -1
  237. package/package.json +1 -1
  238. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js +0 -3
  239. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_08ca0b4._.js.map +0 -1
  240. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0c1k9is._.js +0 -3
  241. package/.next/server/chunks/ssr/1x05_lucide-react_dist_esm_icons_0c1k9is._.js.map +0 -1
  242. package/.next/server/chunks/ssr/_01suk2m._.js +0 -3
  243. package/.next/server/chunks/ssr/_01suk2m._.js.map +0 -1
  244. package/.next/server/chunks/ssr/_0qyglif._.js +0 -5
  245. package/.next/server/chunks/ssr/_0qyglif._.js.map +0 -1
  246. package/.next/server/chunks/ssr/_0skuoxv._.js +0 -6
  247. package/.next/server/chunks/ssr/_0skuoxv._.js.map +0 -1
  248. package/.next/server/chunks/ssr/_14i_6yb._.js +0 -3
  249. package/.next/server/chunks/ssr/_14i_6yb._.js.map +0 -1
  250. package/.next/server/chunks/ssr/_1cbhuz4._.js +0 -3
  251. package/.next/server/chunks/ssr/_1cbhuz4._.js.map +0 -1
  252. package/.next/server/chunks/ssr/_1ewk_mn._.js +0 -3
  253. package/.next/server/chunks/ssr/_1ewk_mn._.js.map +0 -1
  254. package/.next/server/chunks/ssr/node_modules__pnpm_1dcmsrg._.js +0 -3
  255. package/.next/server/chunks/ssr/node_modules__pnpm_1dcmsrg._.js.map +0 -1
  256. package/.next/server/chunks/ssr/src_components_008q3v8._.js +0 -3
  257. package/.next/server/chunks/ssr/src_components_008q3v8._.js.map +0 -1
  258. package/.next/static/chunks/02sab26ica2x3.js +0 -1
  259. package/.next/static/chunks/0eggcu0ovk8sd.js +0 -68
  260. package/.next/static/chunks/0iva6rdtfqpbz.js +0 -1
  261. package/.next/static/chunks/0qm101bdsxdyh.css +0 -10
  262. package/.next/static/chunks/0wg9n5zb8mo2p.js +0 -1
  263. package/.next/static/chunks/0wjw1laqwg-cr.js +0 -21
  264. package/.next/static/chunks/0z_y7el6m76yk.js +0 -1
  265. package/.next/static/chunks/1-ekntoveuxzd.js +0 -4
  266. package/.next/static/chunks/1g6fxjtlpv6p5.js +0 -1
  267. package/.next/static/chunks/1ytqu-ra-fylk.js +0 -3
  268. package/.next/static/chunks/3dlnlsyyysw5m.js +0 -1
  269. package/.next/static/chunks/3kkg030rcpz7l.js +0 -1
  270. package/.next/static/chunks/3pf_4ye6ju8gt.js +0 -1
  271. /package/.next/server/chunks/{ssr/0_nd_mermaid_dist_mermaid_core_mjs_10jvzv6._.js.map → 11mp_@anthropic-ai_sdk_index_mjs_0d2_lq6._.js.map} +0 -0
  272. /package/.next/server/chunks/{ssr/1u84_katex_dist_katex_mjs_05prlqa._.js.map → _next-internal_server_app_api_conversations_route_actions_1-pu7gs.js.map} +0 -0
  273. /package/.next/server/chunks/ssr/{node_modules__pnpm_08em703._.js.map → 0_nd_mermaid_dist_mermaid_core_mjs_0vv_0i3._.js.map} +0 -0
  274. /package/.next/server/chunks/ssr/{node_modules__pnpm_0wnlgm-._.js.map → 1u84_katex_dist_katex_mjs_1z0p1bs._.js.map} +0 -0
  275. /package/.next/server/chunks/ssr/{node_modules__pnpm_1jfqun_._.js.map → _next-internal_server_app_(app)_chat_page_actions_0g4tbzt.js.map} +0 -0
  276. /package/.next/server/chunks/ssr/{node_modules__pnpm_1kngagu._.js.map → node_modules__pnpm_0286-tg._.js.map} +0 -0
  277. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ad2q27._.js.map → node_modules__pnpm_04khl_s._.js.map} +0 -0
  278. /package/.next/server/chunks/ssr/{node_modules__pnpm_0ns_6dd._.js.map → node_modules__pnpm_07t_e8c._.js.map} +0 -0
  279. /package/.next/server/chunks/ssr/{node_modules__pnpm_0baie09._.js.map → node_modules__pnpm_08sqeu2._.js.map} +0 -0
  280. /package/.next/server/chunks/ssr/{node_modules__pnpm_1o3_0-n._.js.map → node_modules__pnpm_0a9b2ei._.js.map} +0 -0
  281. /package/.next/server/chunks/ssr/{node_modules__pnpm_0e15nhj._.js.map → node_modules__pnpm_0ah02mu._.js.map} +0 -0
  282. /package/.next/server/chunks/ssr/{node_modules__pnpm_20tdqv_._.js.map → node_modules__pnpm_0cj8ryj._.js.map} +0 -0
  283. /package/.next/server/chunks/ssr/{node_modules__pnpm_1h890n6._.js.map → node_modules__pnpm_0f77_ng._.js.map} +0 -0
  284. /package/.next/server/chunks/ssr/{node_modules__pnpm_1u8p2h3._.js.map → node_modules__pnpm_0fd3pr1._.js.map} +0 -0
  285. /package/.next/server/chunks/ssr/{node_modules__pnpm_1zu-9we._.js.map → node_modules__pnpm_0gifu-u._.js.map} +0 -0
  286. /package/.next/server/chunks/ssr/{node_modules__pnpm_1_o0jyk._.js.map → node_modules__pnpm_0jpv2b6._.js.map} +0 -0
  287. /package/.next/server/chunks/ssr/{node_modules__pnpm_1f3lm9p._.js.map → node_modules__pnpm_0og06fy._.js.map} +0 -0
  288. /package/.next/server/chunks/ssr/{node_modules__pnpm_12s6q4d._.js.map → node_modules__pnpm_0qc3gsk._.js.map} +0 -0
  289. /package/.next/server/chunks/ssr/{node_modules__pnpm_0e3u5g-._.js.map → node_modules__pnpm_0ts89ne._.js.map} +0 -0
  290. /package/.next/server/chunks/ssr/{node_modules__pnpm_1moe8b6._.js.map → node_modules__pnpm_0ttvopp._.js.map} +0 -0
  291. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ly58kw._.js.map → node_modules__pnpm_0u3u82f._.js.map} +0 -0
  292. /package/.next/server/chunks/ssr/{node_modules__pnpm_1hw4h9e._.js.map → node_modules__pnpm_0y35hs4._.js.map} +0 -0
  293. /package/.next/server/chunks/ssr/{node_modules__pnpm_0jhh7p5._.js.map → node_modules__pnpm_104pzhc._.js.map} +0 -0
  294. /package/.next/server/chunks/ssr/{node_modules__pnpm_1gqkoe3._.js.map → node_modules__pnpm_195j8p_._.js.map} +0 -0
  295. /package/.next/server/chunks/ssr/{node_modules__pnpm_0i0uccx._.js.map → node_modules__pnpm_1l8k8w1._.js.map} +0 -0
  296. /package/.next/server/chunks/ssr/{node_modules__pnpm_0rd-a9g._.js.map → node_modules__pnpm_1w0f1m5._.js.map} +0 -0
  297. /package/.next/server/chunks/ssr/{node_modules__pnpm_1gtgu48._.js.map → node_modules__pnpm_1woddr6._.js.map} +0 -0
  298. /package/.next/server/chunks/ssr/{node_modules__pnpm_0_z3_bl._.js.map → node_modules__pnpm_1x0t5_z._.js.map} +0 -0
  299. /package/.next/server/chunks/ssr/{node_modules__pnpm_07_kgbe._.js.map → node_modules__pnpm_1xzf8g_._.js.map} +0 -0
  300. /package/.next/static/{ICaoXcRMmgrIFWk8C_Z6D → uJ5RYxgFnE5svAvnuLDXN}/_buildManifest.js +0 -0
  301. /package/.next/static/{ICaoXcRMmgrIFWk8C_Z6D → uJ5RYxgFnE5svAvnuLDXN}/_clientMiddlewareManifest.js +0 -0
  302. /package/.next/static/{ICaoXcRMmgrIFWk8C_Z6D → uJ5RYxgFnE5svAvnuLDXN}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/%40swc%2Bhelpers%400.5.23/node_modules/%40swc/helpers/cjs/_interop_require_wildcard.cjs","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/hooks-server-context.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/static-generation-bailout.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/server-async-storage.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/redirect.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/http-access-fallback/http-access-fallback.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/not-found.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/forbidden.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/unauthorized.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/lib/router-utils/is-postpone.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/is-next-router-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/unstable-rethrow.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/navigation.react-server.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/navigation.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/navigation.js","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/unrecognized-action-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/readonly-url-search-params.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/redirect-status-code.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/redirect-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/blocking-route-messages.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/instant-validation/boundary-constants.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/instant-validation/boundary-tracking.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/dynamic-rendering.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/navigation-dynamic-rendering.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/staged-rendering.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/dynamic-rendering-utils.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/lib/framework/boundary-constants.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/lib/scheduler.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/instant-messages.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/invariant-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/bailout-to-csr.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/promise-with-resolvers.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/segment.ts","../../../../node_modules/.pnpm/clsx%402.1.1/node_modules/clsx/dist/clsx.mjs","../../../../src/context/AppContext.tsx","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/utils.ts","../../../../src/lib/utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../../src/lib/settings.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/config-utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/tw-join.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/from-theme.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/validators.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/default-config.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/merge-configs.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/tw-merge.ts"],"sourcesContent":["\"use strict\";\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\nexports._ = _interop_require_wildcard;\n","const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'\n\nexport class DynamicServerError extends Error {\n digest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE\n\n constructor(public readonly description: string) {\n super(`Dynamic server usage: ${description}`)\n }\n}\n\nexport function isDynamicServerError(err: unknown): err is DynamicServerError {\n if (\n typeof err !== 'object' ||\n err === null ||\n !('digest' in err) ||\n typeof err.digest !== 'string'\n ) {\n return false\n }\n\n return err.digest === DYNAMIC_ERROR_CODE\n}\n","const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'\n\nexport class StaticGenBailoutError extends Error {\n public readonly code = NEXT_STATIC_GEN_BAILOUT\n}\n\nexport function isStaticGenBailoutError(\n error: unknown\n): error is StaticGenBailoutError {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false\n }\n\n return error.code === NEXT_STATIC_GEN_BAILOUT\n}\n","// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n","import { RedirectStatusCode } from './redirect-status-code'\nimport {\n type RedirectType,\n type RedirectError,\n isRedirectError,\n REDIRECT_ERROR_CODE,\n} from './redirect-error'\nimport { actionAsyncStorage } from './server-async-storage'\n\nexport function getRedirectError(\n url: string,\n type: RedirectType,\n statusCode: RedirectStatusCode = RedirectStatusCode.TemporaryRedirect\n): RedirectError {\n const error = new Error(REDIRECT_ERROR_CODE) as RedirectError\n error.digest = `${REDIRECT_ERROR_CODE};${type};${url};${statusCode};`\n return error\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler, it will serve a 307 to the caller.\n * - In a Server Action, it will perform a client-side navigation when JavaScript is available or serve a 303 for a progressive enhancement form submission.\n * - In a Server Action, type defaults to 'push' and 'replace' elsewhere.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function redirect(\n /** The URL to redirect to */\n url: string,\n type?: RedirectType\n): never {\n type ??= actionAsyncStorage?.getStore()?.isAction ? 'push' : 'replace'\n\n throw getRedirectError(url, type, RedirectStatusCode.TemporaryRedirect)\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler, it will serve a 308 to the caller.\n * - In a Server Action, it will perform a client-side navigation when JavaScript is available or serve a 303 for a progressive enhancement form submission.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function permanentRedirect(\n /** The URL to redirect to */\n url: string,\n type: RedirectType = 'replace'\n): never {\n throw getRedirectError(url, type, RedirectStatusCode.PermanentRedirect)\n}\n\n/**\n * Returns the encoded URL from the error if it's a RedirectError, null\n * otherwise. Note that this does not validate the URL returned.\n *\n * @param error the error that may be a redirect error\n * @return the url if the error was a redirect error\n */\nexport function getURLFromRedirectError(error: RedirectError): string\nexport function getURLFromRedirectError(error: unknown): string | null {\n if (!isRedirectError(error)) return null\n\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';')\n}\n\nexport function getRedirectTypeFromError(error: RedirectError): RedirectType {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return error.digest.split(';', 2)[1] as RedirectType\n}\n\nexport function getRedirectStatusCodeFromError(error: RedirectError): number {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return Number(error.digest.split(';').at(-2))\n}\n","export const HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401,\n}\n\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus))\n\nexport const HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK'\n\nexport type HTTPAccessFallbackError = Error & {\n digest: `${typeof HTTP_ERROR_FALLBACK_ERROR_CODE};${string}`\n}\n\n/**\n * Checks an error to determine if it's an error generated by\n * the HTTP navigation APIs `notFound()`, `forbidden()` or `unauthorized()`.\n *\n * @param error the error that may reference a HTTP access error\n * @returns true if the error is a HTTP access error\n */\nexport function isHTTPAccessFallbackError(\n error: unknown\n): error is HTTPAccessFallbackError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n const [prefix, httpStatus] = error.digest.split(';')\n\n return (\n prefix === HTTP_ERROR_FALLBACK_ERROR_CODE &&\n ALLOWED_CODES.has(Number(httpStatus))\n )\n}\n\nexport function getAccessFallbackHTTPStatus(\n error: HTTPAccessFallbackError\n): number {\n const httpStatus = error.digest.split(';')[1]\n return Number(httpStatus)\n}\n\nexport function getAccessFallbackErrorTypeByStatus(\n status: number\n): 'not-found' | 'forbidden' | 'unauthorized' | undefined {\n switch (status) {\n case 401:\n return 'unauthorized'\n case 403:\n return 'forbidden'\n case 404:\n return 'not-found'\n default:\n return\n }\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `<meta name=\"robots\" content=\"noindex\" />` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};404`\n\nexport function notFound(): never {\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n\n throw error\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};403`\n\nexport function forbidden(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`forbidden()\\` is experimental and only allowed to be enabled when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};401`\n\nexport function unauthorized(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`unauthorized()\\` is experimental and only allowed to be used when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n","const REACT_POSTPONE_TYPE: symbol = Symbol.for('react.postpone')\n\nexport function isPostpone(error: any): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n error.$$typeof === REACT_POSTPONE_TYPE\n )\n}\n","import {\n isHTTPAccessFallbackError,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\nimport { isRedirectError, type RedirectError } from './redirect-error'\n\n/**\n * Returns true if the error is a navigation signal error. These errors are\n * thrown by user code to perform navigation operations and interrupt the React\n * render.\n */\nexport function isNextRouterError(\n error: unknown\n): error is RedirectError | HTTPAccessFallbackError {\n return isRedirectError(error) || isHTTPAccessFallbackError(error)\n}\n","import { isHangingPromiseRejectionError } from '../../server/dynamic-rendering-utils'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { isNextRouterError } from './is-next-router-error'\nimport {\n isDynamicPostpone,\n isPrerenderInterruptedError,\n} from '../../server/app-render/dynamic-rendering'\nimport { isDynamicServerError } from './hooks-server-context'\n\n/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * In the browser bundle this module is aliased to `./unstable-rethrow.browser`, which performs a\n * subset of these checks (the server-only ones can never occur in the browser). This default\n * module holds the full server logic and is used on every server runtime (Node, edge) and in any\n * context where the alias does not apply.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */\nexport function unstable_rethrow(error: unknown): void {\n if (\n isNextRouterError(error) ||\n isBailoutToCSRError(error) ||\n isDynamicServerError(error) ||\n isDynamicPostpone(error) ||\n isPostpone(error) ||\n isHangingPromiseRejectionError(error) ||\n isPrerenderInterruptedError(error)\n ) {\n throw error\n }\n\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause)\n }\n}\n","import { ReadonlyURLSearchParams } from './readonly-url-search-params'\n\nexport function unstable_isUnrecognizedActionError(): boolean {\n throw new Error(\n '`unstable_isUnrecognizedActionError` can only be used on the client.'\n )\n}\n\nexport { redirect, permanentRedirect } from './redirect'\nexport { notFound } from './not-found'\nexport { forbidden } from './forbidden'\nexport { unauthorized } from './unauthorized'\nexport { unstable_rethrow } from './unstable-rethrow'\nexport { ReadonlyURLSearchParams }\n\nexport const RedirectType = {\n push: 'push',\n replace: 'replace',\n} as const\n","import type { Params } from '../../server/request/params'\n\nimport React, { useContext, useMemo, use } from 'react'\nimport {\n AppRouterContext,\n LayoutRouterContext,\n type AppRouterInstance,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport {\n SearchParamsContext,\n PathnameContext,\n PathParamsContext,\n NavigationPromisesContext,\n ReadonlyURLSearchParams,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport {\n computeSelectedLayoutSegment,\n getSelectedLayoutSegmentPath,\n} from '../../shared/lib/segment'\n\nimport {\n useDynamicRouteParams,\n useDynamicSearchParams,\n} from './navigation-dynamic-rendering'\n\nconst {\n instrumentParamsForClientValidation,\n instrumentSearchParamsForClientValidation,\n expectCompleteParamsInClientValidation,\n} = process.env.__NEXT_CACHE_COMPONENTS\n ? (require('./instant-samples') as typeof import('./instant-samples'))\n : {}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you *read* the current URL's search parameters.\n *\n * Learn more about [`URLSearchParams` on MDN](https://developer.mozilla.org/docs/Web/API/URLSearchParams)\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useSearchParams } from 'next/navigation'\n *\n * export default function Page() {\n * const searchParams = useSearchParams()\n * searchParams.get('foo') // returns 'bar' when ?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSearchParams`](https://nextjs.org/docs/app/api-reference/functions/use-search-params)\n */\n// Client components API\nexport function useSearchParams(): ReadonlyURLSearchParams {\n useDynamicSearchParams?.('useSearchParams()')\n\n const searchParams = useContext(SearchParamsContext)\n\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = useMemo((): ReadonlyURLSearchParams => {\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null!\n }\n\n return new ReadonlyURLSearchParams(searchParams)\n }, [searchParams])\n\n // During build-time instant validation, wrap with an proxy\n // so that accessing undeclared search params throws an error.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n readonlySearchParams\n ) {\n return instrumentSearchParamsForClientValidation!(readonlySearchParams)\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.searchParams)\n }\n }\n\n return readonlySearchParams\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the current URL's pathname.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { usePathname } from 'next/navigation'\n *\n * export default function Page() {\n * const pathname = usePathname() // returns \"/dashboard\" on /dashboard?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `usePathname`](https://nextjs.org/docs/app/api-reference/functions/use-pathname)\n */\n// Client components API\nexport function usePathname(): string {\n useDynamicRouteParams?.('usePathname()')\n\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n const pathname = useContext(PathnameContext) as string\n\n // During build-time instant validation, error if fallback params exist\n // because usePathname() can't return a sensible value without all params.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n pathname\n ) {\n expectCompleteParamsInClientValidation!('usePathname()')\n return pathname\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.pathname)\n }\n }\n\n return pathname\n}\n\n// Client components API\nexport {\n ServerInsertedHTMLContext,\n useServerInsertedHTML,\n} from '../../shared/lib/server-inserted-html.shared-runtime'\n\n/**\n *\n * This hook allows you to programmatically change routes inside [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components).\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useRouter } from 'next/navigation'\n *\n * export default function Page() {\n * const router = useRouter()\n * // ...\n * router.push('/dashboard') // Navigate to /dashboard\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useRouter`](https://nextjs.org/docs/app/api-reference/functions/use-router)\n */\n// Client components API\nexport function useRouter(): AppRouterInstance {\n const router = useContext(AppRouterContext)\n if (router === null) {\n throw new Error('invariant expected app router to be mounted')\n }\n\n // Read the bfcacheId of the closest CacheNode and merge it into the\n // returned router instance. This is contextual: callers in a shared\n // layout get the layout's id; callers in a leaf segment get the leaf's.\n // The id is stored on the CacheNode as a number and materialized as a\n // string here. The format mirrors React's `useId()` (e.g. `_r_0_`) with\n // a `b` prefix, so the id can be safely concatenated with other keys\n // without collision.\n const layout = useContext(LayoutRouterContext)\n const bfcacheIdNumber = layout?.parentCacheNode.bfcacheId ?? 0\n return useMemo<AppRouterInstance>(\n () => ({\n back: router.back,\n forward: router.forward,\n refresh: router.refresh,\n hmrRefresh: router.hmrRefresh,\n push: router.push,\n replace: router.replace,\n prefetch: router.prefetch,\n experimental_gesturePush: router.experimental_gesturePush,\n bfcacheId: '_b_' + bfcacheIdNumber + '_',\n }),\n [router, bfcacheIdNumber]\n )\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read a route's dynamic params filled in by the current URL.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useParams } from 'next/navigation'\n *\n * export default function Page() {\n * // on /dashboard/[team] where pathname is /dashboard/nextjs\n * const { team } = useParams() // team === \"nextjs\"\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useParams`](https://nextjs.org/docs/app/api-reference/functions/use-params)\n */\n// Client components API\nexport function useParams<T extends Params = Params>(): T {\n useDynamicRouteParams?.('useParams()')\n\n const params = useContext(PathParamsContext) as T\n\n // During build-time instant validation, wrap with a proxy\n // so that accessing undeclared params throws an error.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n params\n ) {\n return instrumentParamsForClientValidation!(params)\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.params) as T\n }\n }\n\n return params\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segments **below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n *\n * import { useSelectedLayoutSegments } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segments = useSelectedLayoutSegments()\n *\n * return (\n * <ul>\n * {segments.map((segment, index) => (\n * <li key={index}>{segment}</li>\n * ))}\n * </ul>\n * )\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegments`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segments)\n */\n// Client components API\nexport function useSelectedLayoutSegments(\n parallelRouteKey: string = 'children'\n): string[] {\n useDynamicRouteParams?.('useSelectedLayoutSegments()')\n\n const context = useContext(LayoutRouterContext)\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null\n\n // During build-time instant validation, error if fallback params exist\n // because useSelectedLayoutSegments() can't return a sensible value without all params.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n context\n ) {\n expectCompleteParamsInClientValidation!('useSelectedLayoutSegments()')\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n const promise =\n navigationPromises.selectedLayoutSegmentsPromises?.get(parallelRouteKey)\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return use(promise)\n }\n }\n }\n\n return getSelectedLayoutSegmentPath(context.parentTree, parallelRouteKey)\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segment **one level below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n * import { useSelectedLayoutSegment } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segment = useSelectedLayoutSegment()\n *\n * return <p>Active segment: {segment}</p>\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegment`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segment)\n */\n// Client components API\nexport function useSelectedLayoutSegment(\n parallelRouteKey: string = 'children'\n): string | null {\n useDynamicRouteParams?.('useSelectedLayoutSegment()')\n const navigationPromises = useContext(NavigationPromisesContext)\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey)\n\n // During build-time instant validation, error if fallback params exist\n // because useSelectedLayoutSegment() can't return a sensible value without all params.\n if (typeof window === 'undefined' && process.env.__NEXT_CACHE_COMPONENTS) {\n expectCompleteParamsInClientValidation!('useSelectedLayoutSegment()')\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (\n process.env.NODE_ENV !== 'production' &&\n navigationPromises &&\n 'use' in React\n ) {\n const promise =\n navigationPromises.selectedLayoutSegmentPromises?.get(parallelRouteKey)\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return use(promise)\n }\n }\n\n return computeSelectedLayoutSegment(selectedLayoutSegments, parallelRouteKey)\n}\n\nexport { unstable_isUnrecognizedActionError } from './unrecognized-action-error'\n\n// Shared components APIs\nexport {\n // We need the same class that was used to instantiate the context value\n // Otherwise instanceof checks will fail in usercode\n ReadonlyURLSearchParams,\n}\nexport {\n notFound,\n forbidden,\n unauthorized,\n redirect,\n permanentRedirect,\n RedirectType,\n unstable_rethrow,\n} from './navigation.react-server'\n","module.exports = require('./dist/client/components/navigation')\n","export class UnrecognizedActionError extends Error {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args)\n this.name = 'UnrecognizedActionError'\n }\n}\n\n/**\n * Check whether a server action call failed because the server action was not recognized by the server.\n * This can happen if the client and the server are not from the same deployment.\n *\n * Example usage:\n * ```ts\n * try {\n * await myServerAction();\n * } catch (err) {\n * if (unstable_isUnrecognizedActionError(err)) {\n * // The client is from a different deployment than the server.\n * // Reloading the page will fix this mismatch.\n * window.alert(\"Please refresh the page and try again\");\n * return;\n * }\n * }\n * ```\n * */\nexport function unstable_isUnrecognizedActionError(\n error: unknown\n): error is UnrecognizedActionError {\n return !!(\n error &&\n typeof error === 'object' &&\n error instanceof UnrecognizedActionError\n )\n}\n","/**\n * ReadonlyURLSearchParams implementation shared between client and server.\n * This file is intentionally not marked as 'use client' or 'use server'\n * so it can be imported by both environments.\n */\n\n/** @internal */\nclass ReadonlyURLSearchParamsError extends Error {\n constructor() {\n super(\n 'Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams'\n )\n }\n}\n\n/**\n * A read-only version of URLSearchParams that throws errors when mutation methods are called.\n * This ensures that the URLSearchParams returned by useSearchParams() cannot be mutated.\n */\nexport class ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n append() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n delete() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n set() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n sort() {\n throw new ReadonlyURLSearchParamsError()\n }\n}\n","export enum RedirectStatusCode {\n SeeOther = 303,\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n}\n","import { RedirectStatusCode } from './redirect-status-code'\n\nexport const REDIRECT_ERROR_CODE = 'NEXT_REDIRECT'\n\nexport type RedirectType = 'push' | 'replace'\n\nexport type RedirectError = Error & {\n digest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${string};${RedirectStatusCode};`\n}\n\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */\nexport function isRedirectError(error: unknown): error is RedirectError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n\n const digest = error.digest.split(';')\n const [errorCode, type] = digest\n const destination = digest.slice(2, -2).join(';')\n const status = digest.at(-2)\n\n const statusCode = Number(status)\n\n return (\n errorCode === REDIRECT_ERROR_CODE &&\n (type === 'replace' || type === 'push') &&\n typeof destination === 'string' &&\n !isNaN(statusCode) &&\n statusCode in RedirectStatusCode\n )\n}\n","export function createRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createDynamicBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createRuntimeBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering or a navigation.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createLinkBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data during prerendering or a navigation.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` accessed outside of \\`<Suspense>\\` may prevent the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-shell-url-data`\n )\n}\n\nexport function createDynamicBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering or a navigation.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeBodyError` or `createDynamicBodyError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data during prerendering.\\n\\n` +\n `\\`fetch(...)\\`, \\`cookies()\\`, \\`headers()\\`, \\`params\\`, \\`searchParams\\`, or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createLinkMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prefetched. \\`params\\` or \\`searchParams\\` accessed in \\`generateMetadata()\\` prevent it from being prefetched.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createDynamicMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`fetch(...)\\` or \\`connection()\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-dynamic`\n )\n}\n\nexport function createLinkViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateViewport()\\`.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateViewport()\\`.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createDynamicViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateViewport()\\`.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the viewport data with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeViewportError` or `createDynamicViewportError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateViewport()\\`.\\n\\n` +\n `This prevents the page from being prerendered, leading to a slower user experience. Unlike metadata, viewport cannot be streamed behind \\`<Suspense>\\` because it affects the initial page load.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the viewport with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeMetadataError` or `createDynamicMetadataError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function logBuildDebugHint(route: string): void {\n if (process.env.NODE_ENV !== 'development') {\n console.error(\n `To get a more detailed stack trace and pinpoint the issue, try one of the following:\\n` +\n ` - Start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.\\n` +\n ` - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`\n )\n } else if (!process.env.__NEXT_DEV_SERVER) {\n console.error(\n `To debug the issue, start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.`\n )\n }\n}\n","export const INSTANT_VALIDATION_BOUNDARY_NAME =\n '__next_instant_validation_boundary__'\n\nexport const INSTANT_SLOT_MARKER_PREFIX = '__next_instant_slot_'\nexport const INSTANT_SLOT_MARKER_SUFFIX = '__'\n","export type ValidationBoundaryTracking = {\n /**\n * Map from boundary id (the SegmentPath where a validation boundary is\n * placed) to the file paths of modules inside that boundary's subtree.\n * When the boundary spans multiple parallel slots, each slot contributes\n * its own first-found module path so all unrendered segments can be\n * reported together.\n */\n requiredIds: Map<string, string[]>\n renderedIds: Set<string>\n}\n\nexport function createValidationBoundaryTracking(): ValidationBoundaryTracking {\n return {\n requiredIds: new Map(),\n renderedIds: new Set(),\n }\n}\n\nexport function allRequiredBoundariesRendered(\n state: ValidationBoundaryTracking\n): boolean {\n for (const id of state.requiredIds.keys()) {\n if (!state.renderedIds.has(id)) {\n return false\n }\n }\n return true\n}\n","/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport type {\n WorkUnitStore,\n PrerenderStoreLegacy,\n PrerenderStoreModern,\n ValidationStoreClient,\n PrerenderStoreModernServer,\n} from '../app-render/work-unit-async-storage.external'\n\n// Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react'\n\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n getStagedRenderingController,\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from './work-unit-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport {\n ClientHookDynamicError,\n isClientHookDynamicError,\n makeClientHookHangingPromise,\n trackRuntimeDataAccessed,\n} from '../dynamic-rendering-utils'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from '../../lib/framework/boundary-constants'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport {\n createRuntimeBodyError,\n createDynamicBodyError,\n createRuntimeBodyErrorInNavigation,\n createDynamicBodyErrorInNavigation,\n createDynamicOrRuntimeBodyError,\n createRuntimeMetadataError,\n createDynamicMetadataError,\n createRuntimeViewportError,\n createDynamicViewportError,\n createDynamicOrRuntimeViewportError,\n createDynamicOrRuntimeMetadataError,\n logBuildDebugHint,\n createLinkBodyErrorInNavigation,\n createLinkMetadataError,\n createLinkViewportError,\n} from './blocking-route-messages'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport {\n INSTANT_VALIDATION_BOUNDARY_NAME,\n INSTANT_SLOT_MARKER_PREFIX,\n INSTANT_SLOT_MARKER_SUFFIX,\n} from './instant-validation/boundary-constants'\nimport {\n type ValidationBoundaryTracking,\n allRequiredBoundariesRendered,\n} from './instant-validation/boundary-tracking'\nimport type { InstantValidationSampleTracking } from './instant-validation/instant-samples'\nimport { createUnrenderedSegmentError } from '../../shared/lib/instant-messages'\n\nconst hasPostpone = typeof React.unstable_postpone === 'function'\n\nexport type DynamicAccess = {\n /**\n * If debugging, this will contain the stack trace of where the dynamic access\n * occurred. This is used to provide more information to the user about why\n * their page is being rendered dynamically.\n */\n stack?: string\n\n /**\n * The expression that was accessed dynamically.\n */\n expression: string\n}\n\n// Stores dynamic reasons used during an RSC render.\nexport type DynamicTrackingState = {\n /**\n * When true, stack information will also be tracked during dynamic access.\n */\n readonly isDebugDynamicAccesses: boolean | undefined\n\n /**\n * The dynamic accesses that occurred during the render.\n */\n readonly dynamicAccesses: Array<DynamicAccess>\n\n syncDynamicErrorWithStack: null | Error\n syncDynamicErrorWithStackPostMicrotask: boolean\n}\n\n// Stores dynamic reasons used during an SSR render.\nexport type DynamicValidationState = {\n hasSuspenseAboveBody: boolean\n hasDynamicMetadata: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n}\n\nexport function createDynamicTrackingState(\n isDebugDynamicAccesses: boolean | undefined\n): DynamicTrackingState {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n syncDynamicErrorWithStackPostMicrotask: false,\n }\n}\n\nexport function createDynamicValidationState(): DynamicValidationState {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n }\n}\n\nfunction getPendingClientSyncDynamicError(\n clientDynamic: DynamicTrackingState\n): null | Error {\n return clientDynamic.syncDynamicErrorWithStackPostMicrotask\n ? null\n : clientDynamic.syncDynamicErrorWithStack\n}\n\nexport function getFirstDynamicReason(\n trackingState: DynamicTrackingState\n): undefined | string {\n return trackingState.dynamicAccesses[0]?.expression\n}\n\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */\nexport function markCurrentScopeAsDynamic(\n store: WorkStore,\n workUnitStore: undefined | Exclude<WorkUnitStore, PrerenderStoreModern>,\n expression: string\n): void {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n case 'generate-static-params':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-ppr':\n return postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n case 'generate-static-params':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */\nexport function throwToInterruptStaticGeneration(\n expression: string,\n store: WorkStore,\n prerenderStore: PrerenderStoreLegacy\n): never {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n\n prerenderStore.revalidate = 0\n\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n}\n\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */\nexport function trackDynamicDataInDynamicRender(workUnitStore: WorkUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n break\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction abortOnSynchronousDynamicDataAccess(\n route: string,\n expression: string,\n prerenderStore: PrerenderStoreModern\n): void {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n\n const error = createPrerenderInterruptedError(reason)\n\n prerenderStore.controller.abort(error)\n\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function abortOnSynchronousPlatformIOAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): void {\n const dynamicTracking = prerenderStore.dynamicTracking\n\n if (dynamicTracking && dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n // React completes the task that is currently rendering before scheduled\n // abort cleanup. Client tracking can attribute the sync IO only during\n // that current task; server tracking keeps the error regardless.\n queueMicrotask(() => {\n dynamicTracking.syncDynamicErrorWithStackPostMicrotask = true\n })\n }\n\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n}\n\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */\nexport function abortAndThrowOnSynchronousRequestDataAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): never {\n // The synchronously accessed request data would have been available during\n // a runtime prerender, which would have rendered past this point instead of\n // aborting — so a runtime prefetch would produce more content than this\n // render. Record that, same as when request data access creates a hanging\n // promise (see makeRuntimeHangingPromise). Unlike\n // `abortOnSynchronousPlatformIOAccess`, which aborts a runtime prerender\n // all the same and therefore must not record anything.\n trackRuntimeDataAccessed(prerenderStore)\n\n const prerenderSignal = prerenderStore.controller.signal\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // Preserve the exact server-side dynamic access for final validation after\n // interrupting this render.\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n }\n throw createPrerenderInterruptedError(\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n )\n}\n\n/**\n * This component will call `React.postpone` that throws the postponed error.\n */\ntype PostponeProps = {\n reason: string\n route: string\n}\nexport function Postpone({ reason, route }: PostponeProps): never {\n const prerenderStore = workUnitAsyncStorage.getStore()\n const dynamicTracking =\n prerenderStore && prerenderStore.type === 'prerender-ppr'\n ? prerenderStore.dynamicTracking\n : null\n postponeWithTracking(route, reason, dynamicTracking)\n}\n\nexport function postponeWithTracking(\n route: string,\n expression: string,\n dynamicTracking: null | DynamicTrackingState\n): never {\n assertPostpone()\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n\n React.unstable_postpone(createPostponeReason(route, expression))\n}\n\nfunction createPostponeReason(route: string, expression: string) {\n return (\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` +\n `React throws this special object to indicate where. It should not be caught by ` +\n `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`\n )\n}\n\nexport function isDynamicPostpone(err: unknown) {\n if (\n typeof err === 'object' &&\n err !== null &&\n typeof (err as any).message === 'string'\n ) {\n return isDynamicPostponeReason((err as any).message)\n }\n return false\n}\n\nfunction isDynamicPostponeReason(reason: string) {\n return (\n reason.includes(\n 'needs to bail out of prerendering at this point because it used'\n ) &&\n reason.includes(\n 'Learn more: https://nextjs.org/docs/messages/ppr-caught-error'\n )\n )\n}\n\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw new Error(\n 'Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'\n )\n}\n\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'\n\nfunction createPrerenderInterruptedError(message: string): Error {\n const error = new Error(message)\n ;(error as any).digest = NEXT_PRERENDER_INTERRUPTED\n return error\n}\n\ntype DigestError = Error & {\n digest: string\n}\n\nexport function isPrerenderInterruptedError(\n error: unknown\n): error is DigestError {\n return (\n typeof error === 'object' &&\n error !== null &&\n (error as any).digest === NEXT_PRERENDER_INTERRUPTED &&\n 'name' in error &&\n 'message' in error &&\n error instanceof Error\n )\n}\n\nexport function accessedDynamicData(\n dynamicAccesses: Array<DynamicAccess>\n): boolean {\n return dynamicAccesses.length > 0\n}\n\nexport function consumeDynamicAccess(\n serverDynamic: DynamicTrackingState,\n clientDynamic: DynamicTrackingState\n): DynamicTrackingState['dynamicAccesses'] {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses)\n return serverDynamic.dynamicAccesses\n}\n\nexport function formatDynamicAPIAccesses(\n dynamicAccesses: Array<DynamicAccess>\n): string[] {\n return dynamicAccesses\n .filter(\n (access): access is Required<DynamicAccess> =>\n typeof access.stack === 'string' && access.stack.length > 0\n )\n .map(({ expression, stack }) => {\n stack = stack\n .split('\\n')\n // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4)\n .filter((line) => {\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false\n }\n\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false\n }\n\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false\n }\n\n return true\n })\n .join('\\n')\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`\n })\n}\n\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw new Error(\n `Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`\n )\n }\n}\n\n/**\n * This is a bit of a hack to allow us to abort a render using a Postpone instance instead of an Error which changes React's\n * abort semantics slightly.\n */\nexport function createRenderInBrowserAbortSignal(): AbortSignal {\n const controller = new AbortController()\n controller.abort(new BailoutToCSRError('Render in Browser'))\n return controller.signal\n}\n\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */\nexport function createHangingInputAbortSignal(\n workUnitStore: PrerenderStoreModernServer\n): AbortSignal\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController()\n\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(() => {\n controller.abort()\n })\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the final stage.\n // if an input didn't resolve at that point, then we can assume it never will.\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n\n const stagedRendering = getStagedRenderingController(workUnitStore)\n if (stagedRendering && stagedRendering.finalStage !== null) {\n stagedRendering\n .waitForStage(stagedRendering.finalStage)\n .then(() => scheduleOnNextTick(() => controller.abort()), noop)\n } else {\n scheduleOnNextTick(() => controller.abort())\n }\n }\n\n return controller.signal\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n return undefined\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction noop() {}\n\nexport function annotateDynamicAccess(\n expression: string,\n prerenderStore: PrerenderStoreModern | ValidationStoreClient\n) {\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function useDynamicRouteParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (workStore && workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-client': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n React.use(\n makeClientHookHangingPromise(\n workUnitStore.renderSignal,\n new ClientHookDynamicError(workStore.route, expression)\n )\n )\n }\n break\n }\n case 'prerender':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'prerender-ppr': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(\n workStore.route,\n expression,\n workUnitStore.dynamicTracking\n )\n }\n break\n }\n case 'validation-client': {\n // Don't check fallbackRouteParams here. We handle params that weren't\n // provided in the samples using a proxy that throws when accessed.\n break\n }\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'generate-static-params':\n throw new InvariantError(\n `\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`\n )\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\nexport function useDynamicSearchParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore) {\n // We assume pages router context and just return\n return\n }\n\n if (!workUnitStore) {\n throwForMissingRequestStore(expression)\n }\n\n switch (workUnitStore.type) {\n case 'validation-client':\n // During instant validation we try to behave as close to client as possible,\n // so this shouldn't hang during SSR.\n return\n case 'prerender-client': {\n React.use(\n makeClientHookHangingPromise(\n workUnitStore.renderSignal,\n new ClientHookDynamicError(workStore.route, expression)\n )\n )\n break\n }\n case 'prerender-legacy':\n case 'prerender-ppr': {\n if (workStore.forceStatic) {\n return\n }\n throw new BailoutToCSRError(expression)\n }\n case 'prerender':\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'generate-static-params':\n throw new InvariantError(\n `\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`\n )\n case 'request':\n return\n default:\n workUnitStore satisfies never\n }\n}\n\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/\n\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags =\n 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'\n\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(\n `\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`\n)\n\nconst hasMetadataRegex = new RegExp(\n `\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasViewportRegex = new RegExp(\n `\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`)\n\nconst hasInstantValidationBoundaryRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_VALIDATION_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst slotMarkerRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_SLOT_MARKER_PREFIX}(\\\\d+)${INSTANT_SLOT_MARKER_SUFFIX}[\\\\n\\\\s]`\n)\n\n/** Look up the config factory for the slot this error belongs to.\n * Checks the component stack for a slot marker (__next_instant_slot_N__)\n * and returns the config at that index. Falls back to index 0 (root\n * config) when no slot marker is found or the slot has no config. */\nfunction resolveInstantStack(\n componentStack: string,\n dynamicValidation: InstantValidationState\n): (() => Error) | null {\n const { slotStacks } = dynamicValidation\n if (slotStacks.length > 1) {\n const match = slotMarkerRegex.exec(componentStack)\n if (match) {\n // Slot markers are 0-indexed in the component name but\n // slotStacks is 1-indexed (index 0 is the root config).\n const slotIndex = parseInt(match[1], 10) + 1\n const slotStack = slotStacks[slotIndex]\n if (slotStack != null) {\n return slotStack\n }\n }\n }\n // Fall back to root config (index 0)\n return slotStacks[0] ?? null\n}\n\n/**\n * Inspects the component stack of an outlet boundary to discover whether the\n * user placed a Suspense boundary above the document body, and records the\n * opt-in on `dynamicValidation.hasSuspenseAboveBody` if so.\n *\n * The outlet itself isn't a meaningful source of dynamic — it only resolves\n * when metadata/viewport are dynamic, which we track via their own boundaries.\n * However, the outlet renders alongside the page content, so its stack passes\n * through the user's layout chain (typically reaching into `<body>` via the\n * root layout). That makes the outlet stack our best opportunity to spot a\n * Suspense boundary above the body, even when no real body content is dynamic.\n * Without this, a route whose only dynamic source is `generateViewport()` would\n * miss the Suspense-above-body opt-in, because the viewport's stack lives in\n * the head and never sees the user's root layout.\n *\n * We deliberately only set `hasSuspenseAboveBody`, not `hasAllowedDynamic`. The\n * latter tracks whether the body has dynamic content that's been wrapped in\n * Suspense (i.e., the page is partially dynamic). The outlet rendering tells us\n * about the structural opt-in for an empty shell, not about the body being\n * partially dynamic. The distinction matters because dynamic metadata is only\n * acceptable when the page is partially dynamic (via real body holes), and we\n * don't want this outlet-based detection to mask that case.\n */\nfunction trackOutletSuspenseAboveBody(\n componentStack: string,\n dynamicValidation: DynamicValidationState\n): void {\n if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n dynamicValidation.hasSuspenseAboveBody = true\n }\n}\n\nexport function trackAllowedDynamicAccess(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true\n return\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createDynamicOrRuntimeBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport enum DynamicHoleKind {\n /** We know that this hole is caused by link data. */\n Link = 1,\n /** We know that this hole is caused by runtime data. */\n Runtime = 2,\n /** We know that this hole is caused by dynamic data. */\n Dynamic = 3,\n}\n\n/** Stores dynamic reasons used during an SSR render in instant validation. */\nexport type InstantValidationState = {\n hasDynamicMetadata: boolean\n hasAllowedClientDynamicAboveBoundary: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n validationPreventingErrors: Array<Error>\n thrownErrorsOutsideBoundary: Array<unknown>\n /** Per-slot config factories. Index 0 is the root config (fallback).\n * Indices 1+ correspond to slot marker components in the tree. */\n slotStacks: Array<(() => Error) | null>\n}\n\nexport function createInstantValidationState(\n slotStacks: Array<(() => Error) | null>\n): InstantValidationState {\n return {\n hasDynamicMetadata: false,\n hasAllowedClientDynamicAboveBoundary: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n validationPreventingErrors: [],\n thrownErrorsOutsideBoundary: [],\n slotStacks,\n }\n}\n\nexport function trackDynamicHoleInNavigation(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: InstantValidationState,\n clientDynamic: DynamicTrackingState,\n kind: DynamicHoleKind,\n boundaryState: ValidationBoundaryTracking\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n }\n // Resolve the config stack for this specific error. If the error\n // is inside a slot marker, use that slot's config. Otherwise fall\n // back to the default.\n const effectiveCreateInstantStack = resolveInstantStack(\n componentStack,\n dynamicValidation\n )\n\n if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkMetadataError(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeMetadataError(workStore.route)\n : createDynamicMetadataError(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicMetadata = error\n return\n }\n if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkViewportError(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeViewportError(workStore.route)\n : createDynamicViewportError(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // We don't see the validation boundary in the component stack,\n // so this hole must be coming from a shared parent.\n // Shared parents are fully resolved and don't have RSC holes,\n // but they can still suspend in a client component during SSR.\n\n // If we managed to render all the validation boundaries, that means\n // that the client holes aren't blocking validation and we can disregard them.\n // Note that we don't even care whether they have suspense or not.\n if (allRequiredBoundariesRendered(boundaryState)) {\n dynamicValidation.hasAllowedClientDynamicAboveBoundary = true\n dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata\n return\n } else {\n // TODO(instant-validation) TODO(NAR-787)\n // If shared parents blocked us from validating, we should only log\n // the errors from the innermost (segments), i.e. omit layouts whose\n // slots managed to render (because clearly they didn't block validation)\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because a Client Component in a parent segment prevented the page from rendering.`\n const error = addErrorContext(\n new Error(message),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.validationPreventingErrors.push(error)\n return\n }\n } else {\n // The hole originates inside the validation boundary.\n //\n // Check if we have a Suspense above the hole, but below the validation boundary.\n // If we do, then this dynamic usage wouldn't block a navigation to this subtree.\n // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.\n //\n // Note that in the component stack, children come before parents.\n //\n // Valid:\n // ...\n // at Suspense\n // ...\n // at __next_prefetch_validation_boundary__\n //\n // Invalid:\n // ...\n // at __next_prefetch_validation_boundary__\n // ...\n // at Suspense\n //\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n dynamicValidation.hasAllowedDynamic = true\n return\n } else {\n // invalid - fallthrough\n }\n }\n }\n\n if (syncDynamicError) {\n if (\n effectiveCreateInstantStack !== null &&\n syncDynamicError.cause === undefined\n ) {\n syncDynamicError.cause = effectiveCreateInstantStack()\n }\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(\n dynamicReason,\n componentStack,\n effectiveCreateInstantStack\n )\n )\n return\n }\n\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkBodyErrorInNavigation(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeBodyErrorInNavigation(workStore.route)\n : createDynamicBodyErrorInNavigation(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport function trackThrownErrorInNavigation(\n workStore: WorkStore,\n dynamicValidation: InstantValidationState,\n thrownValue: unknown,\n componentStack: string\n) {\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // There's no validation boundary on the component stack.\n // This error may have blocked a boundary from rendering.\n\n // Wrap the error to provide component context.\n // This helps for errors from node_modules which would otherwise\n // have no useful stack information due to ignore-listing,\n // e.g. next/dynamic with `ssr: false`.\n const error = addErrorContext(\n new Error(\n 'An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.',\n { cause: thrownValue }\n ),\n componentStack,\n null\n )\n dynamicValidation.thrownErrorsOutsideBoundary.push(error)\n } else {\n // There's validation boundary on the component stack,\n // so we know this error didn't block a validation boundary from rendering.\n // However, this error might be hiding be hiding dynamic content that would\n // cause validation to fail.\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n // There's a Suspense below the validation boundary but above this error's location.\n // This subtree can't fail instant validation because any potential\n // dynamic holes would be guarded by the Suspense anyway,\n // so we can allow this.\n return\n } else {\n // invalid - fallthrough\n }\n }\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because an error prevented the target segment from rendering.`\n const error = addErrorContext(\n new Error(message, { cause: thrownValue }),\n componentStack,\n null // TODO(instant-validation-build): conflicting use of cause\n )\n dynamicValidation.validationPreventingErrors.push(error)\n }\n}\n\nexport function trackDynamicHoleInRuntimeShell(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createDynamicMetadataError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createDynamicViewportError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createDynamicBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport function trackDynamicHoleInStaticShell(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createRuntimeMetadataError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createRuntimeViewportError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createRuntimeBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n *\n * Accepts an already-created Error so the SWC error-code plugin can see the\n * `new Error(...)` call at each call site and auto-assign error codes.\n */\nfunction addErrorContext(\n error: Error,\n componentStack: string,\n createInstantStack: (() => Error) | null\n) {\n const ownerStack =\n process.env.NODE_ENV !== 'production' && React.captureOwnerStack\n ? React.captureOwnerStack()\n : null\n\n if (createInstantStack !== null) {\n error.cause = createInstantStack()\n }\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack =\n error.name + ': ' + error.message + (ownerStack || componentStack)\n return error\n}\n\nexport enum PreludeState {\n Full = 0,\n Empty = 1,\n Errored = 2,\n}\n\nexport function logDisallowedDynamicError(\n workStore: WorkStore,\n error: Error\n): void {\n console.error(error)\n logBuildDebugHint(workStore.route)\n}\n\nexport function throwIfSyncIOUsed(\n workStore: WorkStore,\n serverDynamic: DynamicTrackingState\n) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(\n workStore,\n serverDynamic.syncDynamicErrorWithStack\n )\n throw new StaticGenBailoutError()\n }\n}\n\nexport function throwIfDisallowedDynamic(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState,\n allowEmptyStaticShell: boolean\n): void {\n throwIfSyncIOUsed(workStore, serverDynamic)\n\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.hasDynamicMetadata\n ) {\n console.error(createDynamicOrRuntimeMetadataError(workStore.route).message)\n throw new StaticGenBailoutError()\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n for (let i = 0; i < dynamicErrors.length; i++) {\n logDisallowedDynamicError(workStore, dynamicErrors[i])\n }\n\n throw new StaticGenBailoutError()\n }\n\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(\n createDynamicOrRuntimeViewportError(workStore.route).message\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`\n )\n throw new StaticGenBailoutError()\n }\n }\n}\n\nexport function getStaticShellDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n allowEmptyStaticShell: boolean\n): Array<Error> {\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicErrors.length === 0 &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return []\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n\n/**\n * `errors` are validation failures that should be surfaced immediately.\n * `deferredFallback` carries a missing-boundary explanation that the caller\n * should hold back until *every* validation depth has been tried — a missing\n * boundary often just means a parent layout intentionally omitted a slot, and\n * a different depth's validation may surface a more meaningful error.\n */\nexport type NavigationValidationResult =\n // instances that block instant navigation\n | Array<Error>\n // validation was blocked with zero or more reasons\n | Error\n | AggregateError\n\nexport function getNavigationDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: InstantValidationState,\n validationSampleTracking: InstantValidationSampleTracking | null,\n boundaryState: ValidationBoundaryTracking,\n devRenderDidError: boolean\n): NavigationValidationResult {\n // If we have errors related to missing samples, those should take precedence over everything else.\n if (validationSampleTracking) {\n const { missingSampleErrors } = validationSampleTracking\n if (missingSampleErrors.length > 0) {\n return missingSampleErrors\n }\n }\n\n const { validationPreventingErrors } = dynamicValidation\n if (validationPreventingErrors.length > 0) {\n if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // The dev render already surfaced server errors to the user.\n // The same errors likely caused validation to be inconclusive,\n // so reporting them again as validation failures would be noisy.\n return []\n }\n return validationPreventingErrors\n }\n\n // NOTE: We don't care about Suspense above body here,\n // we're only concerned with the validation boundary\n if (prelude !== PreludeState.Full) {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n prelude === PreludeState.Empty &&\n !dynamicValidation.hasAllowedClientDynamicAboveBoundary &&\n allRequiredBoundariesRendered(boundaryState)\n ) {\n // If we ever get this far then we messed up the tracking of invalid\n // dynamic. (When boundaries are missing the deferred fallback below\n // will surface a more useful error.)\n return new InvariantError(\n `Route \"${workStore.route}\" failed to render during instant validation and Next.js was unable to determine a reason.`\n )\n }\n } else {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n }\n\n // Missing boundaries on their own aren't a strong signal — a parent\n // layout may legitimately omit a slot. Defer this so the caller can\n // try shallower validation depths first; if every depth comes up\n // empty we still want to surface this so the user is made aware that\n // validation didn't complete. When we add a markers API, the\n // marker-based variant of this check can become strict again.\n if (!allRequiredBoundariesRendered(boundaryState)) {\n const { thrownErrorsOutsideBoundary } = dynamicValidation\n const rootInstantStack = dynamicValidation.slotStacks[0]\n if (thrownErrorsOutsideBoundary.length === 0) {\n const missingFiles: string[] = []\n for (const [id, filePaths] of boundaryState.requiredIds) {\n if (!boundaryState.renderedIds.has(id)) {\n for (const filePath of filePaths) {\n let normalized = filePath\n .replace(/^\\[project\\][\\\\/]?/, '')\n .replace(process.cwd() + '/', '')\n .replace(process.cwd() + '\\\\', '')\n missingFiles.push(normalized)\n }\n }\n }\n missingFiles.sort()\n return createUnrenderedSegmentError(workStore.route, missingFiles)\n } else if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // Errors outside the boundary likely blocked it from rendering,\n // but they're already being reported to the user via the dev\n // render. Suppress the validation failure to avoid noise.\n return []\n } else if (thrownErrorsOutsideBoundary.length === 1) {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to the following error.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n thrownErrorsOutsideBoundary[0] as Error,\n ])\n } else {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to one of the following errors.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n ...(thrownErrorsOutsideBoundary as Error[]),\n ])\n }\n }\n\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n","// Client-safe access to the server-only dynamic-rendering hooks used by the\n// navigation hooks. On the server these re-export the real implementations; in\n// the browser bundle this module is aliased to\n// `./navigation-dynamic-rendering.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined` so\n// the server module is not bundled into the client. Callers use optional calls\n// (`useDynamicRouteParams?.(...)`), so the browser stub is a no-op.\nexport {\n useDynamicRouteParams,\n useDynamicSearchParams,\n} from '../../server/app-render/dynamic-rendering'\n","import { InvariantError } from '../../shared/lib/invariant-error'\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers'\n\nexport enum RenderStage {\n Before = 1,\n //\n ShellStatic = 11,\n Static = 13,\n //\n ShellRuntime = 21,\n Runtime = 23,\n //\n Dynamic = 30,\n //\n Abandoned = 40,\n}\n\nexport type AdvanceableRenderStage = Exclude<\n RenderStage,\n RenderStage.Before | RenderStage.Abandoned\n>\n\nexport const RENDER_STAGE_ADVANCE_ORDER: AdvanceableRenderStage[] = [\n RenderStage.ShellStatic,\n RenderStage.Static,\n //\n RenderStage.ShellRuntime,\n RenderStage.Runtime,\n //\n RenderStage.Dynamic,\n]\n\nexport function getNextStage(\n stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>\n) {\n return RENDER_STAGE_ADVANCE_ORDER[\n RENDER_STAGE_ADVANCE_ORDER.indexOf(stage) + 1\n ]\n}\n\nexport function isAdvanceableRenderStage(\n stage: RenderStage\n): stage is AdvanceableRenderStage {\n return RenderStage.Before < stage && stage <= RenderStage.Dynamic\n}\n\nexport enum SyncIOMode {\n /** Sync IO does not error in any stage. */\n Untracked = 1,\n /** Before `partialPrefetching`: Sync IO errors in static stages, and is allowed otherwise. */\n AllowedInRuntimeOrDynamic = 2,\n /** After `partialPrefetching`: Sync IO errors in all stages other than dynamic. */\n AllowedInDynamic = 3,\n}\n\nexport class StagedRenderingController {\n private abortSignal: AbortSignal | null\n private abandonController: AbortController | null\n private syncIOMode: SyncIOMode\n public readonly finalStage: AdvanceableRenderStage | null\n\n currentStage: RenderStage = RenderStage.Before\n\n syncInterruptReason: Error | null = null\n\n triggers: Record<AdvanceableRenderStage, StageTrigger> = {\n [RenderStage.ShellStatic]: createStageTrigger(),\n [RenderStage.Static]: createStageTrigger(),\n //\n [RenderStage.ShellRuntime]: createStageTrigger(),\n [RenderStage.Runtime]: createStageTrigger(),\n //\n [RenderStage.Dynamic]: createStageTrigger(),\n }\n\n constructor({\n abortSignal,\n abandonController,\n syncIO,\n finalStage,\n }: {\n abortSignal: AbortSignal | null\n abandonController: AbortController | null\n syncIO: SyncIOMode\n finalStage: AdvanceableRenderStage | null\n }) {\n this.abortSignal = abortSignal\n this.abandonController = abandonController\n this.syncIOMode = syncIO\n this.finalStage = finalStage\n\n if (abortSignal) {\n abortSignal.addEventListener(\n 'abort',\n () => {\n // Reject all stage promises that haven't already been resolved.\n // `cancelStageTrigger` is a noop if the trigger already resolved.\n const { reason } = abortSignal\n for (const trigger of Object.values(this.triggers)) {\n cancelStageTrigger(trigger, reason)\n }\n },\n { once: true }\n )\n }\n\n if (abandonController) {\n abandonController.signal.addEventListener(\n 'abort',\n () => {\n this.abandonRender()\n },\n { once: true }\n )\n }\n }\n\n onStage(stage: AdvanceableRenderStage, callback: () => void) {\n addSyncTriggerListener(this.triggers[stage], callback)\n }\n\n shouldTrackSyncInterrupt(): boolean {\n if (this.syncIOMode === SyncIOMode.Untracked) {\n return false\n }\n\n switch (this.currentStage) {\n case RenderStage.Before:\n // If we haven't started the render yet, it can't be interrupted.\n return false\n case RenderStage.ShellStatic:\n case RenderStage.Static:\n return true\n case RenderStage.ShellRuntime:\n case RenderStage.Runtime: {\n switch (this.syncIOMode) {\n case SyncIOMode.AllowedInRuntimeOrDynamic: {\n // Before `partialPrefetching`: Sync IO only errors in static stages.\n return false\n }\n case SyncIOMode.AllowedInDynamic: {\n return true\n }\n }\n // NOT a fallthrough, but eslint doesn't understand that\n }\n case RenderStage.Dynamic:\n case RenderStage.Abandoned:\n return false\n default:\n this.currentStage satisfies never\n return false\n }\n }\n\n /** Note: only call this if `shouldTrackSyncInterrupt()` returned true */\n syncInterruptCurrentStageWithReason(reason: Error) {\n const { currentStage } = this\n if (\n currentStage === RenderStage.Before ||\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Not interruptible. Defensive noop.\n return\n }\n\n // If Sync IO occurs during an abandonable render, we trigger the abandon.\n // The abandon listener will call abandonRender which advances through\n // stages to let caches fill before marking as Abandoned.\n if (this.abandonController) {\n this.abandonController.abort()\n return\n }\n\n if (this.abortSignal) {\n // If this is an abortable render, we capture the interruption reason and stop advancing.\n // We don't release any more promises.\n // The caller is expected to abort the signal.\n this.syncInterruptReason = reason\n this.currentStage = RenderStage.Abandoned\n return\n }\n\n // If we're in a non-abandonable & non-abortable render,\n // we need to advance to the Dynamic stage and capture the interruption reason.\n // (in dev, this will be the restarted render)\n this.syncInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n }\n\n getSyncInterruptReason() {\n return this.syncInterruptReason\n }\n\n getStageEndTime(stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>) {\n return this.triggers[getNextStage(stage)].triggeredAt ?? Infinity\n }\n\n private abandonRender() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the next stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n\n const { currentStage } = this\n\n if (currentStage === RenderStage.Before) {\n throw new InvariantError(\n \"A render that hasn't started yet cannot be abandoned\"\n )\n }\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // We shouldn't ever trigger an abandon in these. Defensive noop.\n return\n }\n\n // Resolve all stages after the current one, up to runtime (excluding dynamic)\n const nextStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const dynamicStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(\n RenderStage.Dynamic\n )\n for (let i = nextStageIx; i < dynamicStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n\n this.currentStage = RenderStage.Abandoned\n }\n\n advanceStage(targetStage: AdvanceableRenderStage) {\n if (this.finalStage !== null && targetStage > this.finalStage) {\n throw new InvariantError(\n `Attempted to advance to stage ${RenderStage[targetStage]} but the render is limited to ${RenderStage[this.finalStage]}`\n )\n }\n const { currentStage } = this\n\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Terminal stages, nowhere left to advance.\n return\n }\n\n // If we're already at the target stage or beyond, do nothing.\n if (targetStage <= currentStage) {\n return\n }\n\n this.currentStage = targetStage\n\n // Resolve all stages between the current stage and the target.\n const nextStageIx =\n currentStage === RenderStage.Before\n ? 0\n : RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const targetStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(targetStage)\n for (let i = nextStageIx; i <= targetStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n }\n\n private resolveStage(stage: AdvanceableRenderStage) {\n fireStageTrigger(this.triggers[stage])\n }\n\n private getStagePromise(stage: AdvanceableRenderStage): Promise<void> {\n return this.triggers[stage].promise\n }\n\n waitForStage(stage: AdvanceableRenderStage) {\n return this.getStagePromise(stage)\n }\n\n delayUntilStage<T>(\n stage: AdvanceableRenderStage,\n displayName: string | undefined,\n resolvedValue: T\n ): Promise<T> {\n const stagePromise = this.getStagePromise(stage)\n\n const promise =\n process.env.NODE_ENV === 'development'\n ? makeDevtoolsIOPromiseFromIOTrigger(\n stagePromise,\n displayName,\n resolvedValue\n )\n : stagePromise.then(() => resolvedValue)\n\n // Analogously to `makeDynamicHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject)\n }\n return promise\n }\n}\n\nfunction ignoreReject() {}\n\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger<T>(\n ioTrigger: Promise<any>,\n displayName: string | undefined,\n resolvedValue: T\n): Promise<T> {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise<T>((resolve, reject) => {\n ioTrigger.then(resolve.bind(null, resolvedValue), reject)\n })\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName\n }\n return promise\n}\n\ntype StageTrigger = {\n state: 'pending' | 'triggered' | 'cancelled'\n triggeredAt: number | null\n promise: Promise<void>\n _listeners: Array<() => void>\n _resolvePromise: () => void\n _rejectPromise: (reason: unknown) => void\n}\n\nfunction addSyncTriggerListener(trigger: StageTrigger, listener: () => void) {\n if (trigger.state === 'pending') {\n trigger._listeners.push(listener)\n } else {\n listener()\n }\n}\n\nfunction createStageTrigger(): StageTrigger {\n const { promise, resolve, reject } = createPromiseWithResolvers<void>()\n return {\n state: 'pending',\n triggeredAt: null,\n promise,\n _listeners: [],\n _resolvePromise: resolve,\n _rejectPromise: reject,\n }\n}\n\nfunction fireStageTrigger(trigger: StageTrigger) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'triggered'\n trigger.triggeredAt = performance.now() + performance.timeOrigin\n try {\n const { _listeners: listeners } = trigger\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n listeners.length = 0\n } finally {\n trigger._resolvePromise()\n }\n}\n\nfunction cancelStageTrigger(trigger: StageTrigger, reason: unknown) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'cancelled'\n // we didn't trigger, so don't save `triggeredAt`.\n\n // We're not gonna fire the listeners, we may as well free them.\n trigger._listeners.length = 0\n\n // Suppress unhandled rejection warnings for promises that no one is awaiting.\n trigger.promise.catch(ignoreReject)\n trigger._rejectPromise(reason)\n}\n","import {\n RenderStage,\n type AdvanceableRenderStage,\n} from './app-render/staged-rendering'\nimport type {\n RequestStore,\n WorkUnitStore,\n} from './app-render/work-unit-async-storage.external'\nimport { workUnitAsyncStorage } from './app-render/work-unit-async-storage.external'\nimport { getServerReact, getClientReact } from './runtime-reacts.external'\n\nexport function isHangingPromiseRejectionError(\n err: unknown\n): err is HangingPromiseRejectionError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === HANGING_PROMISE_REJECTION\n}\n\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'\n\nclass HangingPromiseRejectionError extends Error {\n public readonly digest = HANGING_PROMISE_REJECTION\n\n constructor(\n public readonly route: string,\n public readonly expression: string\n ) {\n super(\n `During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`\n )\n }\n}\n\nconst CLIENT_HOOK_DYNAMIC = 'CLIENT_HOOK_DYNAMIC'\n\nexport class ClientHookDynamicError extends Error {\n public readonly digest = CLIENT_HOOK_DYNAMIC\n\n constructor(route: string, expression: string) {\n super(\n `Route \"${route}\": Next.js encountered URL data \\`${expression}\\` in a Client Component outside of \\`<Suspense>\\`.\\n\\n` +\n `This blocks prerendering because the value is only available at runtime.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Wrap the component in \\`<Suspense fallback={...}>\\` so the hook value streams in after prerendering\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-client-hook`\n )\n }\n}\n\nexport function isClientHookDynamicError(\n err: unknown\n): err is ClientHookDynamicError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === CLIENT_HOOK_DYNAMIC\n}\n\ntype AbortListeners = Array<() => void>\nconst abortListenersBySignal = new WeakMap<AbortSignal, AbortListeners>()\n\n/**\n * Constructs a promise that never resolves, standing in for *dynamic* data:\n * data that is only available during a real dynamic request and hangs in\n * every kind of prerender — `io()`, `connection()`, uncached `fetch()`.\n *\n * This is primarily useful for cacheComponents where we use promise\n * resolution timing to determine which parts of a render can be included in a\n * prerender.\n *\n * Records nothing on the prerender store: the promise's holes are only ever\n * filled by a real dynamic request, so a runtime prefetch response would have\n * the same holes as the static one. If the data source would resolve during a\n * runtime prerender, use `makeRuntimeHangingPromise` instead.\n *\n * @internal\n */\nexport function makeDynamicHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\nexport function makeUntrackedHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for *runtime* data:\n * data that hangs during a static prerender but is available during a runtime\n * prerender (the kind that backs a runtime prefetch request: request data\n * like cookies and headers is available, but the render is still not a real\n * dynamic request). Examples: cookies, headers, fallback params,\n * searchParams, and cache entries that are excluded only from static\n * prerenders.\n *\n * Creating one of these during a static prerender records on the prerender\n * store that a runtime prefetch would produce more content than the static\n * response (`runtimeDataAccessed`), which the segment prefetch encoding uses\n * to tell the client whether a runtime prefetch request could be skipped.\n *\n * When unsure whether data is dynamic or runtime, prefer this method — the\n * cost of over-recording is a redundant runtime prefetch request; the cost of\n * under-recording is a permanently missing one.\n *\n * `workUnitStore` may be null ONLY when the caller tracks the access itself\n * at observation time instead of creation time. This is for promises the\n * framework creates eagerly whether or not anything reads them (e.g. the\n * `searchParams` prop constructed for every page): recording at creation\n * would mark every render. Such a caller MUST call `trackRuntimeDataAccessed`\n * from every path that observes the promise (e.g. the proxy traps for\n * `then`/`status`), against the work unit store active at access time.\n *\n * For fallback-param data — data a concrete (ISR-upgraded) prerender would\n * resolve — use `makeFallbackParamsHangingPromise` instead, so the access\n * is recorded with the right effect on the static-prefetch hint.\n *\n * @internal\n */\nexport function makeRuntimeHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n if (workUnitStore !== null) {\n trackRuntimeDataAccessed(workUnitStore)\n }\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Variant of `makeRuntimeHangingPromise` for *fallback-param* data: fallback\n * route params and values derived solely from them (`params`, `rootParams`,\n * `pathname` during a fallback prerender). Like every runtime data access it\n * records the access on the prerender store's response-level flag, but its\n * effect on the build-time static-prefetch hint differs — on a\n * fallback-upgradeable route the access is transient (a concrete prerender\n * resolves it), so it leaves the hint intact. See\n * `trackFallbackParamsAccessed`.\n *\n * As with `makeRuntimeHangingPromise`, `workUnitStore` may be null ONLY when\n * the caller tracks the access itself at observation time instead of creation\n * time, by calling `trackFallbackParamsAccessed` from every path that\n * observes the promise.\n *\n * @internal\n */\nexport function makeFallbackParamsHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n if (workUnitStore !== null) {\n trackFallbackParamsAccessed(workUnitStore)\n }\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for data that is only\n * accessible in a later *stage* of rendering than this render reaches — e.g.\n * a prefetchable short-stale cache entry that's excluded from shells when the\n * render ends at the shell stage, or params during a runtime-prefetch render\n * that stops before the stage where params resolve.\n *\n * A render that runs through the later stage would include the data; in\n * particular a runtime prefetch renders through its later stages, so on a\n * static prerender store this records `runtimeDataAccessed`, same as\n * `makeRuntimeHangingPromise`.\n *\n * @internal\n */\nexport function makeStageHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore\n): Promise<T> {\n trackRuntimeDataAccessed(workUnitStore)\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Records on a static prerender store that the render accessed a data source\n * which would have resolved during a runtime prerender. No-op for all other\n * store types.\n *\n * `makeRuntimeHangingPromise` and `makeStageHangingPromise` call this\n * automatically; call it directly only where the access is observed\n * separately from the promise's creation (see the null `workUnitStore` case\n * of `makeRuntimeHangingPromise`), or where the prerender is aborted\n * synchronously instead of hanging.\n *\n * For fallback-param data, use `trackFallbackParamsAccessed` instead. When\n * unsure, this is the conservative choice: it unconditionally clears the\n * static-prefetch hint.\n */\nexport function trackRuntimeDataAccessed(workUnitStore: WorkUnitStore): void {\n trackRuntimeDataAccessedImpl(workUnitStore, false)\n}\n\n/**\n * Fallback-param variant of `trackRuntimeDataAccessed`, for accesses of\n * fallback route params and values derived solely from them. It records the\n * response-level flag all the same, but only clears the build-time\n * static-prefetch hint when the route is not fallback-upgradeable — on an\n * upgradeable route the access is transient, since ISR later produces a\n * concrete prerender that resolves it.\n */\nexport function trackFallbackParamsAccessed(\n workUnitStore: WorkUnitStore\n): void {\n trackRuntimeDataAccessedImpl(workUnitStore, true)\n}\n\nfunction trackRuntimeDataAccessedImpl(\n workUnitStore: WorkUnitStore,\n isFallbackParamAccess: boolean\n): void {\n switch (workUnitStore.type) {\n case 'prerender': {\n // Response-level flag (the payload's `u`, forwarded to segment\n // responses as `needsRuntimeRequest`): resolved for every kind of\n // access — a pre-upgrade fallback response must keep reporting that\n // a runtime request would return more. The fulfillment row lands at\n // the current position in the Flight stream, which is what makes the\n // value rewindable per stage. Promise resolution is idempotent, so\n // repeated accesses are free.\n workUnitStore.runtimeDataAccessed?.resolve(true)\n\n // Hint cell (holds the build-constant\n // PrefetchHint.ShouldAttemptStaticPrefetch value directly): a\n // fallback-param access is transient when the route is\n // fallback-upgradeable — ISR later produces the concrete prerender a\n // static prefetch attempt would hit — so it leaves the hint intact.\n // (Until that upgrade, the response-level flag above keeps directing\n // the client to a runtime fallback; the hint only costs a wasted\n // static attempt in the interim.) Every other access clears it.\n const hintCell = workUnitStore.shouldAttemptStaticPrefetch\n if (\n hintCell !== null &&\n (!isFallbackParamAccess || !workUnitStore.isFallbackUpgradeable)\n ) {\n hintCell.current = false\n }\n break\n }\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'validation-client':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n // Only the modern server prerender tracks this; see the field docs on\n // PrerenderStoreModernServer.\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nexport function makeClientHookHangingPromise<T>(\n signal: AbortSignal,\n error: ClientHookDynamicError\n): Promise<T> {\n return makeHangingPromiseWithError(signal, error)\n}\n\nfunction makeHangingPromiseWithError<T>(\n signal: AbortSignal,\n error: Error\n): Promise<T> {\n if (signal.aborted) {\n return Promise.reject(error)\n } else {\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(null, error)\n let currentListeners = abortListenersBySignal.get(signal)\n if (currentListeners) {\n currentListeners.push(boundRejection)\n } else {\n const listeners = [boundRejection]\n abortListenersBySignal.set(signal, listeners)\n signal.addEventListener(\n 'abort',\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n },\n { once: true }\n )\n }\n })\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject)\n return hangingPromise\n }\n}\n\nfunction ignoreReject() {}\n\n/**\n * Creates a promise that will be triggered when another promise resolves.\n * It will not emit unhandled rejections, which is important if the trigger\n * is a promise that might itself get rejected (e.g. when a prerender/render\n * are aborted due to sync IO)\n */\nexport function makePromiseFromTrigger<T>(\n trigger: Promise<any>,\n value: T\n): Promise<T> {\n const promise = trigger.then(() => value)\n promise.catch(ignoreReject)\n return promise\n}\n\nexport function makeDevtoolsIOAwarePromise<T>(\n underlying: T,\n requestStore: RequestStore,\n stage: AdvanceableRenderStage\n): Promise<T> {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(\n stage,\n undefined,\n underlying\n )\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise<T>((resolve) => {\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(() => {\n resolve(underlying)\n }, 0)\n })\n}\n\nexport const RENDER_STAGES_BY_DATA_KIND = {\n sessionData: RenderStage.ShellRuntime as const,\n staticLinkData: RenderStage.Static as const,\n runtimeLinkData: RenderStage.Runtime as const,\n}\n\nexport function applyOwnerStack(error: Error): Error {\n if (process.env.NODE_ENV !== 'production') {\n let ownerStack: string | undefined | null\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n // captureOwnerStack() returns the owner stack for the current React\n // rendering context. Inside a cache scope this only includes the inner\n // component tree. The outer owner stack (captured before entering the\n // cache boundary in use-cache-wrapper.ts) is stored on the cache store.\n // We concatenate both to get the full component tree.\n const innerOwnerStack =\n getClientReact()?.captureOwnerStack?.() ??\n getServerReact()?.captureOwnerStack?.()\n\n switch (workUnitStore?.type) {\n case 'cache':\n case 'private-cache':\n ownerStack =\n (innerOwnerStack || '') + (workUnitStore.outerOwnerStack || '') ||\n undefined\n break\n case 'unstable-cache':\n case 'request':\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n case undefined:\n ownerStack = innerOwnerStack\n break\n default:\n workUnitStore satisfies never\n }\n\n if (ownerStack) {\n let stack = ownerStack\n\n if (error.stack) {\n const frames: string[] = []\n\n for (const frame of error.stack.split('\\n').slice(1)) {\n if (frame.includes('react_stack_bottom_frame')) {\n break\n }\n\n frames.push(frame)\n }\n\n stack = '\\n' + frames.join('\\n') + stack\n }\n\n error.stack = error.name + ': ' + error.message + stack\n }\n }\n\n return error\n}\n","export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'\n","export type ScheduledFn<T = void> = () => T | PromiseLike<T>\nexport type SchedulerFn<T = void> = (cb: ScheduledFn<T>) => void\n\n/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */\nexport const scheduleOnNextTick = (cb: ScheduledFn<void>) => {\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(() => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n process.nextTick(cb)\n }\n })\n}\n\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */\nexport const scheduleImmediate = (cb: ScheduledFn<void>): void => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n setImmediate(cb)\n }\n}\n\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */\nexport function atLeastOneTask() {\n return new Promise<void>((resolve) => scheduleImmediate(resolve))\n}\n\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */\nexport function waitAtLeastOneReactRenderTask(): Promise<void> {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r) => setTimeout(r, 0))\n } else {\n return new Promise((r) => setImmediate(r))\n }\n}\n","export function createUnrenderedSegmentError(\n route: string,\n missingFiles: readonly string[]\n): Error {\n let message = `Route \"${route}\": Could not validate that a segment in your UI has instant navigation.`\n if (missingFiles.length > 0) {\n const label =\n missingFiles.length === 1 ? 'Dropped segment' : 'Dropped segments'\n message +=\n `\\n\\nThis segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.` +\n `\\n\\n${label}:\\n${missingFiles.map((p) => ` ${p}`).join('\\n')}` +\n `\\n\\nWays to fix this:` +\n `\\n - [render] Render the dropped segment` +\n `\\n - [ignore] Set \\`export const instant = false\\` to opt the dropped segment out of instant-navigation validation` +\n `\\n\\nLearn more: https://nextjs.org/docs/messages/instant-unrendered-segment`\n }\n return new Error(message)\n}\n\nexport function createLinkPrefetchPartialError(pathname: string): Error {\n return new Error(\n `Next.js encountered dynamic data during prefetching for \"${pathname}\".\\n\\n` +\n `This will lead to slower, more expensive prefetches.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [upgrade] Opt into Partial Prefetching by exporting \\`const prefetch = 'partial'\\` from the page or layout, or by setting \\`partialPrefetching: true\\` in next.config to opt the whole app in\\n` +\n ` - [disable] Remove \\`prefetch={true}\\` from the <Link> to use the default prefetch\\n` +\n ` - [ignore] Set \\`export const instant = false\\` to opt the route out of instant-navigation validation\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-link-prefetch-partial`\n )\n}\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nexport class BailoutToCSRError extends Error {\n public readonly digest = BAILOUT_TO_CSR\n\n constructor(public readonly reason: string) {\n super(`Bail out to client-side rendering: ${reason}`)\n }\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === BAILOUT_TO_CSR\n}\n","export function createPromiseWithResolvers<T>(): PromiseWithResolvers<T> {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike<T>) => void\n let reject: (reason: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\"\r\n\r\nimport { createContext, useContext, useState, useEffect, useCallback, useRef } from \"react\"\r\nimport { flushSync } from \"react-dom\"\r\nimport { useRouter } from \"next/navigation\"\r\nimport type { Task, TaskBoard, ActivityEvent, Project } from \"@/lib/core\"\r\nimport type { Summary, SelectedDoc } from \"@/types\"\r\nimport { DEFAULT_SETTINGS, type AppSettings } from \"@/lib/settings\"\r\n\r\ninterface AppContextValue {\r\n projects: Project[]\r\n activeProject: string\r\n summary: Summary | null\r\n board: TaskBoard | null\r\n activity: ActivityEvent[]\r\n liveIndicator: boolean\r\n loading: boolean\r\n selectedDoc: SelectedDoc | null\r\n setSelectedDoc: (doc: SelectedDoc | null) => void\r\n rootParam: string\r\n onProjectChange: (root: string) => void\r\n refresh: (root?: string) => Promise<void>\r\n moveTask: (taskId: string, status: string) => Promise<void>\r\n openDoc: (path: string) => Promise<void>\r\n editorSettings: AppSettings[\"editor\"]\r\n setEditorSettings: (s: AppSettings[\"editor\"]) => void\r\n autoRefreshSeconds: number\r\n setAutoRefreshSeconds: (n: number) => void\r\n}\r\n\r\nconst AppContext = createContext<AppContextValue | null>(null)\r\n\r\nexport function useApp(): AppContextValue {\r\n const ctx = useContext(AppContext)\r\n if (!ctx) throw new Error(\"useApp must be used inside AppProvider\")\r\n return ctx\r\n}\r\n\r\nexport function AppProvider({ children }: { children: React.ReactNode }) {\r\n const router = useRouter()\r\n const [projects, setProjects] = useState<Project[]>([])\r\n const [activeProject, setActiveProject] = useState<string>(\"\")\r\n const [summary, setSummary] = useState<Summary | null>(null)\r\n const [board, setBoard] = useState<TaskBoard | null>(null)\r\n const [activity, setActivity] = useState<ActivityEvent[]>([])\r\n const [loading, setLoading] = useState(true)\r\n const [liveIndicator, setLiveIndicator] = useState(false)\r\n const [selectedDoc, setSelectedDoc] = useState<SelectedDoc | null>(null)\r\n const [editorSettings, setEditorSettings] = useState<AppSettings[\"editor\"]>(DEFAULT_SETTINGS.editor)\r\n const [autoRefreshSeconds, setAutoRefreshSeconds] = useState(0)\r\n const sseRef = useRef<EventSource | null>(null)\r\n\r\n const rootParam = activeProject ? `?root=${encodeURIComponent(activeProject)}` : \"\"\r\n\r\n const refresh = useCallback(async (root?: string) => {\r\n const r = root || activeProject\r\n if (!r) return\r\n const rp = `?root=${encodeURIComponent(r)}`\r\n try {\r\n const [sumRes, boardRes, actRes] = await Promise.all([\r\n fetch(`/api/summary${rp}`).then((r) => r.json()),\r\n fetch(`/api/tasks${rp}`).then((r) => r.json()),\r\n fetch(`/api/activity${rp}&limit=30`).then((r) => r.json()),\r\n ])\r\n setSummary(sumRes)\r\n const rawBoard = boardRes?.board\r\n setBoard(rawBoard && typeof rawBoard === 'object' ? {\r\n todo: rawBoard.todo ?? [],\r\n 'in-progress': rawBoard['in-progress'] ?? [],\r\n blocked: rawBoard.blocked ?? [],\r\n done: rawBoard.done ?? [],\r\n cancelled: rawBoard.cancelled ?? [],\r\n } : null)\r\n setActivity(Array.isArray(actRes) ? actRes : [])\r\n } catch {}\r\n setLoading(false)\r\n }, [activeProject])\r\n\r\n // Load projects on mount\r\n useEffect(() => {\r\n fetch(\"/api/projects\")\r\n .then((r) => r.json())\r\n .then((p: Project[]) => {\r\n setProjects(p)\r\n if (p.length > 0) {\r\n setActiveProject(p[0].root)\r\n refresh(p[0].root)\r\n } else {\r\n setLoading(false)\r\n }\r\n })\r\n .catch(() => setLoading(false))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n // SSE for real-time updates\r\n useEffect(() => {\r\n if (!activeProject) return\r\n const es = new EventSource(\"/api/events\")\r\n sseRef.current = es\r\n\r\n es.onmessage = (e) => {\r\n try {\r\n const msg = JSON.parse(e.data)\r\n if (msg.type === \"connected\") return\r\n window.dispatchEvent(new CustomEvent(\"vibedoc:sse\", { detail: msg }))\r\n setLiveIndicator(true)\r\n setTimeout(() => setLiveIndicator(false), 2000)\r\n if ([\"task_updated\", \"task_created\", \"decision_logged\", \"memory_updated\", \"session_start\"].includes(msg.type)) {\r\n refresh()\r\n }\r\n } catch {}\r\n }\r\n\r\n return () => { es.close() }\r\n }, [activeProject, refresh])\r\n\r\n const moveTask = useCallback(async (taskId: string, status: string) => {\r\n // Optimistic update: move card in UI immediately, animated via View Transitions when supported\r\n const apply = () => setBoard(prev => {\r\n if (!prev) return prev\r\n let movedTask: Task | undefined\r\n const next = structuredClone(prev) as TaskBoard\r\n for (const col of Object.keys(next) as (keyof TaskBoard)[]) {\r\n const idx = next[col].findIndex(t => t.id === taskId)\r\n if (idx !== -1) {\r\n movedTask = { ...next[col][idx], status: status as Task[\"status\"] }\r\n next[col] = next[col].filter(t => t.id !== taskId)\r\n }\r\n }\r\n const target = status as keyof TaskBoard\r\n // Insert in server order (core.listTasks sorts by file path) so refresh() doesn't reshuffle\r\n if (movedTask && next[target]) {\r\n next[target] = [...next[target], movedTask].sort((a, b) => (a.file < b.file ? -1 : a.file > b.file ? 1 : 0))\r\n }\r\n return next\r\n })\r\n if (typeof document !== \"undefined\" && \"startViewTransition\" in document) {\r\n document.startViewTransition(() => flushSync(apply))\r\n } else {\r\n apply()\r\n }\r\n\r\n try {\r\n await fetch(`/api/tasks${rootParam}`, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ taskId, status, actor: \"human\" }),\r\n })\r\n refresh()\r\n } catch {\r\n refresh() // revert by fetching real state on error\r\n }\r\n }, [rootParam, refresh])\r\n\r\n const openDoc = useCallback(async (docPath: string) => {\r\n const res = await fetch(`/api/docs${rootParam}&read=${encodeURIComponent(docPath)}`)\r\n const data = await res.json()\r\n setSelectedDoc(data)\r\n router.push(\"/docs\")\r\n }, [rootParam, router])\r\n\r\n function onProjectChange(root: string) {\r\n setActiveProject(root)\r\n refresh(root)\r\n }\r\n\r\n return (\r\n <AppContext.Provider value={{\r\n projects,\r\n activeProject,\r\n summary,\r\n board,\r\n activity,\r\n liveIndicator,\r\n loading,\r\n selectedDoc,\r\n setSelectedDoc,\r\n rootParam,\r\n onProjectChange,\r\n refresh,\r\n moveTask,\r\n openDoc,\r\n editorSettings,\r\n setEditorSettings,\r\n autoRefreshSeconds,\r\n setAutoRefreshSeconds,\r\n }}>\r\n {children}\r\n </AppContext.Provider>\r\n )\r\n}\r\n","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nexport const concatArrays = <T, U>(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n","import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map<string, ClassPartObject> = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record<AnyClassGroupIds, ClassGroup<AnyThemeGroupIds>>,\n theme: ThemeObject<AnyThemeGroupIds>,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup<AnyThemeGroupIds>[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n","export interface AppSettings {\n theme: 'dark' | 'light' | 'system'\n accentColor: 'blue' | 'purple' | 'green' | 'orange'\n fontSize: 'small' | 'medium' | 'large'\n fontSans: FontSans\n fontMono: FontMono\n editor: {\n autoSave: number // 0 = off, otherwise seconds\n wordWrap: boolean\n lineNumbers: boolean\n previewMode: 'split' | 'tab' | 'preview'\n }\n project: {\n autoRefresh: number // 0 = off, otherwise seconds\n showHidden: boolean\n }\n mcp: {\n endpoint: string\n }\n}\n\nexport interface Skill {\n id: string\n name: string\n description: string\n trigger: string\n prompt: string\n tools: string[]\n icon?: string\n}\n\nexport interface Agent {\n id: string\n name: string\n icon: string\n description: string\n skills: string[]\n prompt: string\n active: boolean\n}\n\nexport const SANS_FONTS = [\n { id: 'geist', label: 'Geist', note: 'Made for developer tools. Clean and neutral.' },\n { id: 'inter', label: 'Inter', note: 'The standard UI font. Very clear at small sizes.' },\n { id: 'ibm-plex-sans', label: 'IBM Plex Sans', note: 'Warm and humanist. Good for long reading.' },\n { id: 'atkinson', label: 'Atkinson Hyperlegible', note: 'Letters are easy to tell apart. Best for legibility.' },\n { id: 'dm-sans', label: 'DM Sans', note: 'Geometric. The previous default.' },\n { id: 'system', label: 'System', note: 'Your OS font. Nothing to download.' },\n] as const\n\nexport const MONO_FONTS = [\n { id: 'geist-mono', label: 'Geist Mono', note: 'Pairs with Geist.' },\n { id: 'jetbrains-mono', label: 'JetBrains Mono', note: 'Tall letters, made for code.' },\n { id: 'ibm-plex-mono', label: 'IBM Plex Mono', note: 'Pairs with IBM Plex Sans.' },\n { id: 'dm-mono', label: 'DM Mono', note: 'The previous default.' },\n { id: 'system', label: 'System', note: 'Your OS monospace font.' },\n] as const\n\nexport type FontSans = (typeof SANS_FONTS)[number]['id']\nexport type FontMono = (typeof MONO_FONTS)[number]['id']\n\nexport const DEFAULT_SETTINGS: AppSettings = {\n theme: 'dark',\n accentColor: 'blue',\n fontSize: 'medium',\n fontSans: 'geist',\n fontMono: 'geist-mono',\n editor: {\n autoSave: 10,\n wordWrap: true,\n lineNumbers: true,\n previewMode: 'split',\n },\n project: {\n autoRefresh: 10,\n showHidden: false,\n },\n mcp: {\n endpoint: 'http://localhost:3000/api/mcp',\n },\n}\n\nexport const DEFAULT_SKILLS: Skill[] = [\n {\n id: 'code-review',\n name: 'Code Review',\n description: 'Analyzes code for quality, security, and performance issues',\n trigger: '/review',\n prompt: 'You are an expert code reviewer. Analyze the provided code for:\\n- Code quality and best practices\\n- Security vulnerabilities\\n- Performance issues\\n- Maintainability concerns\\n\\nProvide actionable feedback.',\n tools: ['vibedoc_read_doc', 'vibedoc_search_docs'],\n icon: '🔧',\n },\n {\n id: 'doc-generator',\n name: 'Documentation Generator',\n description: 'Creates documentation from code and comments',\n trigger: '/docs',\n prompt: 'You are a technical documentation writer. Generate clear, comprehensive documentation for the provided code or feature.',\n tools: ['vibedoc_read_doc', 'vibedoc_write_doc'],\n icon: '📝',\n },\n {\n id: 'test-writer',\n name: 'Test Writer',\n description: 'Generates unit tests for functions and components',\n trigger: '/test',\n prompt: 'You are a testing expert. Write comprehensive unit tests for the provided code, covering edge cases and ensuring good test coverage.',\n tools: ['vibedoc_read_doc', 'vibedoc_search_docs'],\n icon: '🧪',\n },\n]\n\nexport const DEFAULT_AGENTS: Agent[] = [\n {\n id: 'code-assistant',\n name: 'Code Assistant',\n icon: '🤖',\n description: 'General-purpose coding help',\n skills: ['code-review', 'test-writer'],\n prompt: 'You are a helpful coding assistant. Help the user with their coding tasks.',\n active: true,\n },\n {\n id: 'doc-bot',\n name: 'Documentation Bot',\n icon: '📚',\n description: 'Focused on docs and comments',\n skills: ['doc-generator'],\n prompt: 'You are a documentation specialist. Focus on creating and improving documentation.',\n active: true,\n },\n]\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key extends string, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = <Key extends string, Value>(\n maxCacheSize: number,\n): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record<Key, Value> = Object.create(null)\n let previousCache: Record<Key, Value> = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map<string, number>()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyClassGroupIds, AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),\n ...createClassGroupUtils(config),\n})\n\nconst createPostfixLookupClassGroupIds = (config: AnyConfig) => {\n const lookup: Partial<Record<AnyClassGroupIds, true>> = Object.create(null)\n const classGroupIds = config.postfixLookupClassGroups\n\n if (classGroupIds) {\n for (let i = 0; i < classGroupIds.length; i++) {\n lookup[classGroupIds[i]!] = true\n }\n }\n\n return lookup\n}\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers,\n postfixLookupClassGroupIds,\n } = configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId: ReturnType<typeof getClassGroupId>\n\n if (hasPostfixModifier) {\n const baseClassNameWithoutPostfix = baseClassName.substring(\n 0,\n maybePostfixModifierPosition,\n )\n classGroupId = getClassGroupId(baseClassNameWithoutPostfix)\n\n const classGroupIdWithPostfix =\n classGroupId && postfixLookupClassGroupIds[classGroupId]\n ? getClassGroupId(baseClassName)\n : undefined\n if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {\n classGroupId = classGroupIdWithPostfix\n hasPostfixModifier = false\n }\n } else {\n classGroupId = getClassGroupId(baseClassName)\n }\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = readonly ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n themeGetter.themeKey = key\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isNamedContainerQuery = (value: string) =>\n value.startsWith('@container') &&\n ((value[10] === '/' && value[11] !== undefined) ||\n (value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10)) ||\n (value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10)))\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryWeight = (value: string) => getIsArbitraryValue(value, isLabelWeight, isAny)\n\nexport const isArbitraryFamilyName = (value: string) =>\n getIsArbitraryValue(value, isLabelFamilyName, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\nexport const isArbitraryVariableWeight = (value: string) =>\n getIsArbitraryVariable(value, isLabelWeight, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelWeight = (label: string) => label === 'number' || label === 'weight'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNamedContainerQuery,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingInline = () =>\n [\n themeContainer,\n isFraction,\n 'screen',\n 'full',\n 'dvw',\n 'lvw',\n 'svw',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingBlock = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'lh',\n 'dvh',\n 'lvh',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Container Type\n * @see https://tailwindcss.com/docs/responsive-design#container-queries\n */\n 'container-type': [\n { '@container': ['', 'normal', 'size', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Container Name\n * @see https://tailwindcss.com/docs/responsive-design#named-containers\n */\n 'container-named': [isNamedContainerQuery],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n {\n columns: [\n isNumber,\n 'auto',\n isArbitraryValue,\n isArbitraryVariable,\n themeContainer,\n ],\n },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [\n {\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset(),\n },\n ],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [\n {\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset(),\n },\n ],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{ 'inset-bs': scaleInset() }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{ 'inset-be': scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{ pbs: scaleUnambiguousSpacing() }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{ pbe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{ mbs: scaleMargin() }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{ mbe: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/inline-size\n */\n 'inline-size': [{ inline: ['auto', ...scaleSizingInline()] }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-inline-size\n */\n 'min-inline-size': [{ 'min-inline': ['auto', ...scaleSizingInline()] }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-inline-size\n */\n 'max-inline-size': [{ 'max-inline': ['none', ...scaleSizingInline()] }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/block-size\n */\n 'block-size': [{ block: ['auto', ...scaleSizingBlock()] }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-block-size\n */\n 'min-block-size': [{ 'min-block': ['auto', ...scaleSizingBlock()] }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-block-size\n */\n 'max-block-size': [{ 'max-block': ['none', ...scaleSizingBlock()] }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight],\n },\n ],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [\n { font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont] },\n ],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{ 'font-features': [isArbitraryValue] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Tab Size\n * @see https://tailwindcss.com/docs/tab-size\n */\n 'tab-size': [{ tab: [isInteger, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: ['', isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{ 'border-bs': scaleBorderWidth() }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{ 'border-be': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{ 'border-bs': scaleColor() }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{ 'border-be': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n // Deprecated since Tailwind CSS v4.0.0\n 'inner',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n /**\n * Zoom\n * @see https://tailwindcss.com/docs/zoom\n */\n zoom: [{ zoom: [isInteger, isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scrollbar Thumb Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-thumb-color': [{ 'scrollbar-thumb': scaleColor() }],\n /**\n * Scrollbar Track Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-track-color': [{ 'scrollbar-track': scaleColor() }],\n /**\n * Scrollbar Gutter\n * @see https://tailwindcss.com/docs/scrollbar-gutter\n */\n 'scrollbar-gutter': [{ 'scrollbar-gutter': ['auto', 'stable', 'both'] }],\n /**\n * Scrollbar Width\n * @see https://tailwindcss.com/docs/scrollbar-width\n */\n 'scrollbar-w': [{ scrollbar: ['auto', 'thin', 'none'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{ 'scroll-mbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{ 'scroll-mbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{ 'scroll-pbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{ 'scroll-pbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n 'container-named': ['container-type'],\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: [\n 'inset-x',\n 'inset-y',\n 'inset-bs',\n 'inset-be',\n 'start',\n 'end',\n 'top',\n 'right',\n 'bottom',\n 'left',\n ],\n 'inset-x': ['start', 'end', 'right', 'left'],\n 'inset-y': ['inset-bs', 'inset-be', 'top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['ps', 'pe', 'pr', 'pl'],\n py: ['pbs', 'pbe', 'pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['ms', 'me', 'mr', 'ml'],\n my: ['mbs', 'mbe', 'mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-bs',\n 'border-w-be',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-s', 'border-w-e', 'border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-bs', 'border-w-be', 'border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-bs',\n 'border-color-be',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-s', 'border-color-e', 'border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-bs', 'border-color-be', 'border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mbs',\n 'scroll-mbe',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-ms', 'scroll-me', 'scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pbs',\n 'scroll-pbe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-ps', 'scroll-pe', 'scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n postfixLookupClassGroups: ['container-type'],\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'postfixLookupClassGroups', override.postfixLookupClassGroups)\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'postfixLookupClassGroups')\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n"],"names":["_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interop_require_wildcard","obj","__esModule","default","cache","has","get","newObj","__proto__","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","exports","_","DynamicServerError","isDynamicServerError","DYNAMIC_ERROR_CODE","Error","constructor","description","digest","err","StaticGenBailoutError","isStaticGenBailoutError","NEXT_STATIC_GEN_BAILOUT","code","error","actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage","getRedirectError","getRedirectStatusCodeFromError","getRedirectTypeFromError","getURLFromRedirectError","permanentRedirect","redirect","url","type","statusCode","RedirectStatusCode","TemporaryRedirect","REDIRECT_ERROR_CODE","getStore","isAction","PermanentRedirect","isRedirectError","split","slice","join","Number","at","HTTPAccessErrorStatus","HTTP_ERROR_FALLBACK_ERROR_CODE","getAccessFallbackErrorTypeByStatus","getAccessFallbackHTTPStatus","isHTTPAccessFallbackError","NOT_FOUND","FORBIDDEN","UNAUTHORIZED","ALLOWED_CODES","Set","values","prefix","httpStatus","status","notFound","DIGEST","forbidden","process","env","__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS","unauthorized","isPostpone","REACT_POSTPONE_TYPE","Symbol","for","$$typeof","isNextRouterError","unstable_rethrow","isBailoutToCSRError","isDynamicPostpone","isHangingPromiseRejectionError","isPrerenderInterruptedError","cause","ReadonlyURLSearchParams","RedirectType","unstable_isUnrecognizedActionError","push","replace","ServerInsertedHTMLContext","useParams","usePathname","useRouter","useSearchParams","useSelectedLayoutSegment","useSelectedLayoutSegments","useServerInsertedHTML","instrumentParamsForClientValidation","instrumentSearchParamsForClientValidation","expectCompleteParamsInClientValidation","__NEXT_CACHE_COMPONENTS","require","useDynamicSearchParams","searchParams","useContext","SearchParamsContext","readonlySearchParams","useMemo","window","NODE_ENV","React","navigationPromises","use","NavigationPromisesContext","useDynamicRouteParams","pathname","PathnameContext","router","AppRouterContext","layout","LayoutRouterContext","bfcacheIdNumber","parentCacheNode","bfcacheId","back","forward","refresh","hmrRefresh","prefetch","experimental_gesturePush","params","PathParamsContext","parallelRouteKey","context","promise","selectedLayoutSegmentsPromises","getSelectedLayoutSegmentPath","parentTree","selectedLayoutSegments","selectedLayoutSegmentPromises","computeSelectedLayoutSegment","module","UnrecognizedActionError","args","name","ReadonlyURLSearchParamsError","URLSearchParams","append","delete","sort","errorCode","destination","isNaN","createDynamicBodyError","createDynamicBodyErrorInNavigation","createDynamicMetadataError","createDynamicOrRuntimeBodyError","createDynamicOrRuntimeMetadataError","createDynamicOrRuntimeViewportError","createDynamicViewportError","createLinkBodyErrorInNavigation","createLinkMetadataError","createLinkViewportError","createRuntimeBodyError","createRuntimeBodyErrorInNavigation","createRuntimeMetadataError","createRuntimeViewportError","logBuildDebugHint","route","console","__NEXT_DEV_SERVER","INSTANT_SLOT_MARKER_PREFIX","INSTANT_SLOT_MARKER_SUFFIX","INSTANT_VALIDATION_BOUNDARY_NAME","allRequiredBoundariesRendered","createValidationBoundaryTracking","requiredIds","Map","renderedIds","state","id","keys","DynamicHoleKind","Postpone","PreludeState","abortAndThrowOnSynchronousRequestDataAccess","abortOnSynchronousPlatformIOAccess","accessedDynamicData","annotateDynamicAccess","consumeDynamicAccess","createDynamicTrackingState","createDynamicValidationState","createHangingInputAbortSignal","createInstantValidationState","createRenderInBrowserAbortSignal","formatDynamicAPIAccesses","getFirstDynamicReason","getNavigationDisallowedDynamicReasons","getStaticShellDisallowedDynamicReasons","logDisallowedDynamicError","markCurrentScopeAsDynamic","postponeWithTracking","throwIfDisallowedDynamic","throwIfSyncIOUsed","throwToInterruptStaticGeneration","trackAllowedDynamicAccess","trackDynamicDataInDynamicRender","trackDynamicHoleInNavigation","trackDynamicHoleInRuntimeShell","trackDynamicHoleInStaticShell","trackThrownErrorInNavigation","hasPostpone","unstable_postpone","isDebugDynamicAccesses","dynamicAccesses","syncDynamicErrorWithStack","syncDynamicErrorWithStackPostMicrotask","hasSuspenseAboveBody","hasDynamicMetadata","dynamicMetadata","hasDynamicViewport","hasAllowedDynamic","dynamicErrors","getPendingClientSyncDynamicError","clientDynamic","trackingState","expression","store","workUnitStore","forceDynamic","forceStatic","dynamicShouldError","dynamicTracking","revalidate","dynamicUsageDescription","dynamicUsageStack","stack","usedDynamic","prerenderStore","abortOnSynchronousDynamicDataAccess","reason","createPrerenderInterruptedError","controller","abort","undefined","errorWithStack","queueMicrotask","trackRuntimeDataAccessed","prerenderSignal","signal","aborted","assertPostpone","createPostponeReason","message","isDynamicPostponeReason","includes","NEXT_PRERENDER_INTERRUPTED","length","serverDynamic","filter","access","map","line","AbortController","BailoutToCSRError","cacheSignal","inputReady","then","stagedRendering","getStagedRenderingController","finalStage","waitForStage","scheduleOnNextTick","noop","workStore","fallbackParams","fallbackRouteParams","size","makeClientHookHangingPromise","renderSignal","ClientHookDynamicError","InvariantError","throwForMissingRequestStore","hasSuspenseRegex","bodyAndImplicitTags","hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex","RegExp","ROOT_LAYOUT_BOUNDARY_NAME","hasMetadataRegex","METADATA_BOUNDARY_NAME","hasViewportRegex","VIEWPORT_BOUNDARY_NAME","hasOutletRegex","OUTLET_BOUNDARY_NAME","hasInstantValidationBoundaryRegex","slotMarkerRegex","resolveInstantStack","componentStack","dynamicValidation","slotStacks","match","exec","slotIndex","parseInt","slotStack","trackOutletSuspenseAboveBody","test","dynamicReason","syncDynamicError","isClientHookDynamicError","addErrorContext","hasAllowedClientDynamicAboveBoundary","validationPreventingErrors","thrownErrorsOutsideBoundary","kind","boundaryState","effectiveCreateInstantStack","boundaryLocation","suspenseLocation","index","thrownValue","createInstantStack","ownerStack","captureOwnerStack","prelude","allowEmptyStaticShell","i","validationSampleTracking","devRenderDidError","missingSampleErrors","rootInstantStack","missingFiles","filePaths","filePath","normalized","cwd","createUnrenderedSegmentError","AggregateError","RENDER_STAGE_ADVANCE_ORDER","RenderStage","StagedRenderingController","SyncIOMode","getNextStage","isAdvanceableRenderStage","stage","indexOf","abortSignal","abandonController","syncIO","currentStage","syncInterruptReason","triggers","createStageTrigger","syncIOMode","addEventListener","trigger","cancelStageTrigger","once","abandonRender","onStage","callback","addSyncTriggerListener","shouldTrackSyncInterrupt","syncInterruptCurrentStageWithReason","advanceStage","getSyncInterruptReason","getStageEndTime","triggeredAt","Infinity","nextStageIx","dynamicStageIx","resolveStage","targetStage","targetStageIx","fireStageTrigger","getStagePromise","delayUntilStage","displayName","resolvedValue","stagePromise","makeDevtoolsIOPromiseFromIOTrigger","catch","ignoreReject","ioTrigger","Promise","resolve","reject","bind","listener","_listeners","createPromiseWithResolvers","_resolvePromise","_rejectPromise","performance","now","timeOrigin","listeners","RENDER_STAGES_BY_DATA_KIND","applyOwnerStack","makeDevtoolsIOAwarePromise","makeDynamicHangingPromise","makeFallbackParamsHangingPromise","makePromiseFromTrigger","makeRuntimeHangingPromise","makeStageHangingPromise","makeUntrackedHangingPromise","trackFallbackParamsAccessed","HANGING_PROMISE_REJECTION","HangingPromiseRejectionError","CLIENT_HOOK_DYNAMIC","abortListenersBySignal","makeHangingPromiseWithError","trackRuntimeDataAccessedImpl","isFallbackParamAccess","runtimeDataAccessed","hintCell","shouldAttemptStaticPrefetch","isFallbackUpgradeable","current","hangingPromise","boundRejection","currentListeners","value","underlying","requestStore","setTimeout","sessionData","ShellRuntime","staticLinkData","Static","runtimeLinkData","Runtime","getClientReact","getServerReact","innerOwnerStack","outerOwnerStack","frames","frame","atLeastOneTask","scheduleImmediate","waitAtLeastOneReactRenderTask","cb","NEXT_RUNTIME","nextTick","setImmediate","r","createLinkPrefetchPartialError","label","p","options","endsWith","BAILOUT_TO_CSR","res","rej","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","getSegmentValue","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","startsWith","isPageSegment","stringifiedQuery","JSON","stringify","segments","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","segmentValue","note","SANS_FONTS","editor","MONO_FONTS","showHidden","DEFAULT_SETTINGS","theme","accentColor","fontSize","fontSans","fontMono","autoSave","wordWrap","lineNumbers","previewMode","project","autoRefresh","mcp","endpoint","DEFAULT_SKILLS","prompt","tools","icon","DEFAULT_AGENTS","skills","active"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,37,39,40,41,42,43,44,45,46,47,48,49,50,51]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/%40swc%2Bhelpers%400.5.23/node_modules/%40swc/helpers/cjs/_interop_require_wildcard.cjs","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/hooks-server-context.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/static-generation-bailout.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/server-async-storage.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/redirect.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/http-access-fallback/http-access-fallback.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/not-found.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/forbidden.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/unauthorized.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/lib/router-utils/is-postpone.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/is-next-router-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/unstable-rethrow.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/navigation.react-server.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/navigation.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/navigation.js","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/unrecognized-action-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/readonly-url-search-params.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/redirect-status-code.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/redirect-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/blocking-route-messages.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/instant-validation/boundary-constants.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/instant-validation/boundary-tracking.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/dynamic-rendering.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/client/components/navigation-dynamic-rendering.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/app-render/staged-rendering.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/server/dynamic-rendering-utils.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/lib/framework/boundary-constants.tsx","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/lib/scheduler.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/instant-messages.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/invariant-error.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/lazy-dynamic/bailout-to-csr.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/promise-with-resolvers.ts","../../../../node_modules/.pnpm/next%4016.3.6_%40babel%2Bcore%407.29.7_%40types%2Bnode%4022.20.4_react-dom%4019.3.0_react%4019.3.0__react%4019.3.0/node_modules/next/src/shared/lib/segment.ts","../../../../node_modules/.pnpm/clsx%402.1.1/node_modules/clsx/dist/clsx.mjs","../../../../src/context/AppContext.tsx","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/utils.ts","../../../../src/lib/utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../../src/lib/settings.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/config-utils.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/tw-join.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/from-theme.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/validators.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/default-config.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/merge-configs.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../../../node_modules/.pnpm/tailwind-merge%403.7.0/node_modules/tailwind-merge/src/lib/tw-merge.ts"],"sourcesContent":["\"use strict\";\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\nexports._ = _interop_require_wildcard;\n","const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'\n\nexport class DynamicServerError extends Error {\n digest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE\n\n constructor(public readonly description: string) {\n super(`Dynamic server usage: ${description}`)\n }\n}\n\nexport function isDynamicServerError(err: unknown): err is DynamicServerError {\n if (\n typeof err !== 'object' ||\n err === null ||\n !('digest' in err) ||\n typeof err.digest !== 'string'\n ) {\n return false\n }\n\n return err.digest === DYNAMIC_ERROR_CODE\n}\n","const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'\n\nexport class StaticGenBailoutError extends Error {\n public readonly code = NEXT_STATIC_GEN_BAILOUT\n}\n\nexport function isStaticGenBailoutError(\n error: unknown\n): error is StaticGenBailoutError {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false\n }\n\n return error.code === NEXT_STATIC_GEN_BAILOUT\n}\n","// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n","import { RedirectStatusCode } from './redirect-status-code'\nimport {\n type RedirectType,\n type RedirectError,\n isRedirectError,\n REDIRECT_ERROR_CODE,\n} from './redirect-error'\nimport { actionAsyncStorage } from './server-async-storage'\n\nexport function getRedirectError(\n url: string,\n type: RedirectType,\n statusCode: RedirectStatusCode = RedirectStatusCode.TemporaryRedirect\n): RedirectError {\n const error = new Error(REDIRECT_ERROR_CODE) as RedirectError\n error.digest = `${REDIRECT_ERROR_CODE};${type};${url};${statusCode};`\n return error\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler, it will serve a 307 to the caller.\n * - In a Server Action, it will perform a client-side navigation when JavaScript is available or serve a 303 for a progressive enhancement form submission.\n * - In a Server Action, type defaults to 'push' and 'replace' elsewhere.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function redirect(\n /** The URL to redirect to */\n url: string,\n type?: RedirectType\n): never {\n type ??= actionAsyncStorage?.getStore()?.isAction ? 'push' : 'replace'\n\n throw getRedirectError(url, type, RedirectStatusCode.TemporaryRedirect)\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler, it will serve a 308 to the caller.\n * - In a Server Action, it will perform a client-side navigation when JavaScript is available or serve a 303 for a progressive enhancement form submission.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function permanentRedirect(\n /** The URL to redirect to */\n url: string,\n type: RedirectType = 'replace'\n): never {\n throw getRedirectError(url, type, RedirectStatusCode.PermanentRedirect)\n}\n\n/**\n * Returns the encoded URL from the error if it's a RedirectError, null\n * otherwise. Note that this does not validate the URL returned.\n *\n * @param error the error that may be a redirect error\n * @return the url if the error was a redirect error\n */\nexport function getURLFromRedirectError(error: RedirectError): string\nexport function getURLFromRedirectError(error: unknown): string | null {\n if (!isRedirectError(error)) return null\n\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';')\n}\n\nexport function getRedirectTypeFromError(error: RedirectError): RedirectType {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return error.digest.split(';', 2)[1] as RedirectType\n}\n\nexport function getRedirectStatusCodeFromError(error: RedirectError): number {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return Number(error.digest.split(';').at(-2))\n}\n","export const HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401,\n}\n\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus))\n\nexport const HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK'\n\nexport type HTTPAccessFallbackError = Error & {\n digest: `${typeof HTTP_ERROR_FALLBACK_ERROR_CODE};${string}`\n}\n\n/**\n * Checks an error to determine if it's an error generated by\n * the HTTP navigation APIs `notFound()`, `forbidden()` or `unauthorized()`.\n *\n * @param error the error that may reference a HTTP access error\n * @returns true if the error is a HTTP access error\n */\nexport function isHTTPAccessFallbackError(\n error: unknown\n): error is HTTPAccessFallbackError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n const [prefix, httpStatus] = error.digest.split(';')\n\n return (\n prefix === HTTP_ERROR_FALLBACK_ERROR_CODE &&\n ALLOWED_CODES.has(Number(httpStatus))\n )\n}\n\nexport function getAccessFallbackHTTPStatus(\n error: HTTPAccessFallbackError\n): number {\n const httpStatus = error.digest.split(';')[1]\n return Number(httpStatus)\n}\n\nexport function getAccessFallbackErrorTypeByStatus(\n status: number\n): 'not-found' | 'forbidden' | 'unauthorized' | undefined {\n switch (status) {\n case 401:\n return 'unauthorized'\n case 403:\n return 'forbidden'\n case 404:\n return 'not-found'\n default:\n return\n }\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `<meta name=\"robots\" content=\"noindex\" />` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};404`\n\nexport function notFound(): never {\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n\n throw error\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};403`\n\nexport function forbidden(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`forbidden()\\` is experimental and only allowed to be enabled when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};401`\n\nexport function unauthorized(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`unauthorized()\\` is experimental and only allowed to be used when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n","const REACT_POSTPONE_TYPE: symbol = Symbol.for('react.postpone')\n\nexport function isPostpone(error: any): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n error.$$typeof === REACT_POSTPONE_TYPE\n )\n}\n","import {\n isHTTPAccessFallbackError,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\nimport { isRedirectError, type RedirectError } from './redirect-error'\n\n/**\n * Returns true if the error is a navigation signal error. These errors are\n * thrown by user code to perform navigation operations and interrupt the React\n * render.\n */\nexport function isNextRouterError(\n error: unknown\n): error is RedirectError | HTTPAccessFallbackError {\n return isRedirectError(error) || isHTTPAccessFallbackError(error)\n}\n","import { isHangingPromiseRejectionError } from '../../server/dynamic-rendering-utils'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { isNextRouterError } from './is-next-router-error'\nimport {\n isDynamicPostpone,\n isPrerenderInterruptedError,\n} from '../../server/app-render/dynamic-rendering'\nimport { isDynamicServerError } from './hooks-server-context'\n\n/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * In the browser bundle this module is aliased to `./unstable-rethrow.browser`, which performs a\n * subset of these checks (the server-only ones can never occur in the browser). This default\n * module holds the full server logic and is used on every server runtime (Node, edge) and in any\n * context where the alias does not apply.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */\nexport function unstable_rethrow(error: unknown): void {\n if (\n isNextRouterError(error) ||\n isBailoutToCSRError(error) ||\n isDynamicServerError(error) ||\n isDynamicPostpone(error) ||\n isPostpone(error) ||\n isHangingPromiseRejectionError(error) ||\n isPrerenderInterruptedError(error)\n ) {\n throw error\n }\n\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause)\n }\n}\n","import { ReadonlyURLSearchParams } from './readonly-url-search-params'\n\nexport function unstable_isUnrecognizedActionError(): boolean {\n throw new Error(\n '`unstable_isUnrecognizedActionError` can only be used on the client.'\n )\n}\n\nexport { redirect, permanentRedirect } from './redirect'\nexport { notFound } from './not-found'\nexport { forbidden } from './forbidden'\nexport { unauthorized } from './unauthorized'\nexport { unstable_rethrow } from './unstable-rethrow'\nexport { ReadonlyURLSearchParams }\n\nexport const RedirectType = {\n push: 'push',\n replace: 'replace',\n} as const\n","import type { Params } from '../../server/request/params'\n\nimport React, { useContext, useMemo, use } from 'react'\nimport {\n AppRouterContext,\n LayoutRouterContext,\n type AppRouterInstance,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport {\n SearchParamsContext,\n PathnameContext,\n PathParamsContext,\n NavigationPromisesContext,\n ReadonlyURLSearchParams,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport {\n computeSelectedLayoutSegment,\n getSelectedLayoutSegmentPath,\n} from '../../shared/lib/segment'\n\nimport {\n useDynamicRouteParams,\n useDynamicSearchParams,\n} from './navigation-dynamic-rendering'\n\nconst {\n instrumentParamsForClientValidation,\n instrumentSearchParamsForClientValidation,\n expectCompleteParamsInClientValidation,\n} = process.env.__NEXT_CACHE_COMPONENTS\n ? (require('./instant-samples') as typeof import('./instant-samples'))\n : {}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you *read* the current URL's search parameters.\n *\n * Learn more about [`URLSearchParams` on MDN](https://developer.mozilla.org/docs/Web/API/URLSearchParams)\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useSearchParams } from 'next/navigation'\n *\n * export default function Page() {\n * const searchParams = useSearchParams()\n * searchParams.get('foo') // returns 'bar' when ?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSearchParams`](https://nextjs.org/docs/app/api-reference/functions/use-search-params)\n */\n// Client components API\nexport function useSearchParams(): ReadonlyURLSearchParams {\n useDynamicSearchParams?.('useSearchParams()')\n\n const searchParams = useContext(SearchParamsContext)\n\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = useMemo((): ReadonlyURLSearchParams => {\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null!\n }\n\n return new ReadonlyURLSearchParams(searchParams)\n }, [searchParams])\n\n // During build-time instant validation, wrap with an proxy\n // so that accessing undeclared search params throws an error.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n readonlySearchParams\n ) {\n return instrumentSearchParamsForClientValidation!(readonlySearchParams)\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.searchParams)\n }\n }\n\n return readonlySearchParams\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the current URL's pathname.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { usePathname } from 'next/navigation'\n *\n * export default function Page() {\n * const pathname = usePathname() // returns \"/dashboard\" on /dashboard?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `usePathname`](https://nextjs.org/docs/app/api-reference/functions/use-pathname)\n */\n// Client components API\nexport function usePathname(): string {\n useDynamicRouteParams?.('usePathname()')\n\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n const pathname = useContext(PathnameContext) as string\n\n // During build-time instant validation, error if fallback params exist\n // because usePathname() can't return a sensible value without all params.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n pathname\n ) {\n expectCompleteParamsInClientValidation!('usePathname()')\n return pathname\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.pathname)\n }\n }\n\n return pathname\n}\n\n// Client components API\nexport {\n ServerInsertedHTMLContext,\n useServerInsertedHTML,\n} from '../../shared/lib/server-inserted-html.shared-runtime'\n\n/**\n *\n * This hook allows you to programmatically change routes inside [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components).\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useRouter } from 'next/navigation'\n *\n * export default function Page() {\n * const router = useRouter()\n * // ...\n * router.push('/dashboard') // Navigate to /dashboard\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useRouter`](https://nextjs.org/docs/app/api-reference/functions/use-router)\n */\n// Client components API\nexport function useRouter(): AppRouterInstance {\n const router = useContext(AppRouterContext)\n if (router === null) {\n throw new Error('invariant expected app router to be mounted')\n }\n\n // Read the bfcacheId of the closest CacheNode and merge it into the\n // returned router instance. This is contextual: callers in a shared\n // layout get the layout's id; callers in a leaf segment get the leaf's.\n // The id is stored on the CacheNode as a number and materialized as a\n // string here. The format mirrors React's `useId()` (e.g. `_r_0_`) with\n // a `b` prefix, so the id can be safely concatenated with other keys\n // without collision.\n const layout = useContext(LayoutRouterContext)\n const bfcacheIdNumber = layout?.parentCacheNode.bfcacheId ?? 0\n return useMemo<AppRouterInstance>(\n () => ({\n back: router.back,\n forward: router.forward,\n refresh: router.refresh,\n hmrRefresh: router.hmrRefresh,\n push: router.push,\n replace: router.replace,\n prefetch: router.prefetch,\n experimental_gesturePush: router.experimental_gesturePush,\n bfcacheId: '_b_' + bfcacheIdNumber + '_',\n }),\n [router, bfcacheIdNumber]\n )\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read a route's dynamic params filled in by the current URL.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useParams } from 'next/navigation'\n *\n * export default function Page() {\n * // on /dashboard/[team] where pathname is /dashboard/nextjs\n * const { team } = useParams() // team === \"nextjs\"\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useParams`](https://nextjs.org/docs/app/api-reference/functions/use-params)\n */\n// Client components API\nexport function useParams<T extends Params = Params>(): T {\n useDynamicRouteParams?.('useParams()')\n\n const params = useContext(PathParamsContext) as T\n\n // During build-time instant validation, wrap with a proxy\n // so that accessing undeclared params throws an error.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n params\n ) {\n return instrumentParamsForClientValidation!(params)\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.params) as T\n }\n }\n\n return params\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segments **below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n *\n * import { useSelectedLayoutSegments } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segments = useSelectedLayoutSegments()\n *\n * return (\n * <ul>\n * {segments.map((segment, index) => (\n * <li key={index}>{segment}</li>\n * ))}\n * </ul>\n * )\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegments`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segments)\n */\n// Client components API\nexport function useSelectedLayoutSegments(\n parallelRouteKey: string = 'children'\n): string[] {\n useDynamicRouteParams?.('useSelectedLayoutSegments()')\n\n const context = useContext(LayoutRouterContext)\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null\n\n // During build-time instant validation, error if fallback params exist\n // because useSelectedLayoutSegments() can't return a sensible value without all params.\n if (\n typeof window === 'undefined' &&\n process.env.__NEXT_CACHE_COMPONENTS &&\n context\n ) {\n expectCompleteParamsInClientValidation!('useSelectedLayoutSegments()')\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n const promise =\n navigationPromises.selectedLayoutSegmentsPromises?.get(parallelRouteKey)\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return use(promise)\n }\n }\n }\n\n return getSelectedLayoutSegmentPath(context.parentTree, parallelRouteKey)\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segment **one level below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n * import { useSelectedLayoutSegment } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segment = useSelectedLayoutSegment()\n *\n * return <p>Active segment: {segment}</p>\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegment`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segment)\n */\n// Client components API\nexport function useSelectedLayoutSegment(\n parallelRouteKey: string = 'children'\n): string | null {\n useDynamicRouteParams?.('useSelectedLayoutSegment()')\n const navigationPromises = useContext(NavigationPromisesContext)\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey)\n\n // During build-time instant validation, error if fallback params exist\n // because useSelectedLayoutSegment() can't return a sensible value without all params.\n if (typeof window === 'undefined' && process.env.__NEXT_CACHE_COMPONENTS) {\n expectCompleteParamsInClientValidation!('useSelectedLayoutSegment()')\n }\n\n // Instrument with Suspense DevTools (dev-only)\n if (\n process.env.NODE_ENV !== 'production' &&\n navigationPromises &&\n 'use' in React\n ) {\n const promise =\n navigationPromises.selectedLayoutSegmentPromises?.get(parallelRouteKey)\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return use(promise)\n }\n }\n\n return computeSelectedLayoutSegment(selectedLayoutSegments, parallelRouteKey)\n}\n\nexport { unstable_isUnrecognizedActionError } from './unrecognized-action-error'\n\n// Shared components APIs\nexport {\n // We need the same class that was used to instantiate the context value\n // Otherwise instanceof checks will fail in usercode\n ReadonlyURLSearchParams,\n}\nexport {\n notFound,\n forbidden,\n unauthorized,\n redirect,\n permanentRedirect,\n RedirectType,\n unstable_rethrow,\n} from './navigation.react-server'\n","module.exports = require('./dist/client/components/navigation')\n","export class UnrecognizedActionError extends Error {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args)\n this.name = 'UnrecognizedActionError'\n }\n}\n\n/**\n * Check whether a server action call failed because the server action was not recognized by the server.\n * This can happen if the client and the server are not from the same deployment.\n *\n * Example usage:\n * ```ts\n * try {\n * await myServerAction();\n * } catch (err) {\n * if (unstable_isUnrecognizedActionError(err)) {\n * // The client is from a different deployment than the server.\n * // Reloading the page will fix this mismatch.\n * window.alert(\"Please refresh the page and try again\");\n * return;\n * }\n * }\n * ```\n * */\nexport function unstable_isUnrecognizedActionError(\n error: unknown\n): error is UnrecognizedActionError {\n return !!(\n error &&\n typeof error === 'object' &&\n error instanceof UnrecognizedActionError\n )\n}\n","/**\n * ReadonlyURLSearchParams implementation shared between client and server.\n * This file is intentionally not marked as 'use client' or 'use server'\n * so it can be imported by both environments.\n */\n\n/** @internal */\nclass ReadonlyURLSearchParamsError extends Error {\n constructor() {\n super(\n 'Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams'\n )\n }\n}\n\n/**\n * A read-only version of URLSearchParams that throws errors when mutation methods are called.\n * This ensures that the URLSearchParams returned by useSearchParams() cannot be mutated.\n */\nexport class ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n append() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n delete() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n set() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n sort() {\n throw new ReadonlyURLSearchParamsError()\n }\n}\n","export enum RedirectStatusCode {\n SeeOther = 303,\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n}\n","import { RedirectStatusCode } from './redirect-status-code'\n\nexport const REDIRECT_ERROR_CODE = 'NEXT_REDIRECT'\n\nexport type RedirectType = 'push' | 'replace'\n\nexport type RedirectError = Error & {\n digest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${string};${RedirectStatusCode};`\n}\n\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */\nexport function isRedirectError(error: unknown): error is RedirectError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n\n const digest = error.digest.split(';')\n const [errorCode, type] = digest\n const destination = digest.slice(2, -2).join(';')\n const status = digest.at(-2)\n\n const statusCode = Number(status)\n\n return (\n errorCode === REDIRECT_ERROR_CODE &&\n (type === 'replace' || type === 'push') &&\n typeof destination === 'string' &&\n !isNaN(statusCode) &&\n statusCode in RedirectStatusCode\n )\n}\n","export function createRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createDynamicBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createRuntimeBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data during prerendering or a navigation.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-runtime`\n )\n}\n\nexport function createLinkBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data during prerendering or a navigation.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` accessed outside of \\`<Suspense>\\` may prevent the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-shell-url-data`\n )\n}\n\nexport function createDynamicBodyErrorInNavigation(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data during prerendering or a navigation.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered or the navigation from being instant, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] Cache the data access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeBodyError` or `createDynamicBodyError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeBodyError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data during prerendering.\\n\\n` +\n `\\`fetch(...)\\`, \\`cookies()\\`, \\`headers()\\`, \\`params\\`, \\`searchParams\\`, or \\`connection()\\` accessed outside of \\`<Suspense>\\` prevents the route from being prerendered, blocking the page load and leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Provide a placeholder with \\`<Suspense fallback={...}>\\` around the data access\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the access with \\`\"use cache\"\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-dynamic`\n )\n}\n\nexport function createLinkMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prefetched. \\`params\\` or \\`searchParams\\` accessed in \\`generateMetadata()\\` prevent it from being prefetched.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function createDynamicMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered. \\`fetch(...)\\` or \\`connection()\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-dynamic`\n )\n}\n\nexport function createLinkViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered URL data in \\`generateViewport()\\`.\\n\\n` +\n `\\`params\\` or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered runtime data in \\`generateViewport()\\`.\\n\\n` +\n `\\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\nexport function createDynamicViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached data in \\`generateViewport()\\`.\\n\\n` +\n `\\`fetch(...)\\` or \\`connection()\\` in \\`generateViewport()\\` prevents the page from being prerendered, leading to a slower user experience.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [cache] Cache the viewport data with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-dynamic`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeViewportError` or `createDynamicViewportError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeViewportError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateViewport()\\`.\\n\\n` +\n `This prevents the page from being prerendered, leading to a slower user experience. Unlike metadata, viewport cannot be streamed behind \\`<Suspense>\\` because it affects the initial page load.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static viewport export instead of \\`generateViewport()\\`\\n` +\n ` - [cache] For uncached data (\\`fetch\\`, database calls): cache the viewport with \\`\"use cache\"\\` in \\`generateViewport()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-viewport-runtime`\n )\n}\n\n/**\n * NOTE: Prefer `createRuntimeMetadataError` or `createDynamicMetadataError`.\n * Only use this in situations like build-time static validation, where\n * we can't pinpoint a more specific reason.\n */\nexport function createDynamicOrRuntimeMetadataError(route: string): Error {\n return new Error(\n `Route \"${route}\": Next.js encountered uncached or runtime data in \\`generateMetadata()\\`.\\n\\n` +\n `This route's metadata is blocked, but the rest of its content can be prerendered.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [static] Use a static metadata export instead of \\`generateMetadata()\\`\\n` +\n ` - [cache] Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\` (does not apply to \\`connection()\\`)\\n` +\n ` - [dynamic] Render a marker component that calls \\`await connection()\\` inside \\`<Suspense>\\` on the page\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-metadata-runtime`\n )\n}\n\nexport function logBuildDebugHint(route: string): void {\n if (process.env.NODE_ENV !== 'development') {\n console.error(\n `To get a more detailed stack trace and pinpoint the issue, try one of the following:\\n` +\n ` - Start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.\\n` +\n ` - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`\n )\n } else if (!process.env.__NEXT_DEV_SERVER) {\n console.error(\n `To debug the issue, start the app in development mode by running \\`next dev\\`, then open \"${route}\" in your browser to investigate the error.`\n )\n }\n}\n","export const INSTANT_VALIDATION_BOUNDARY_NAME =\n '__next_instant_validation_boundary__'\n\nexport const INSTANT_SLOT_MARKER_PREFIX = '__next_instant_slot_'\nexport const INSTANT_SLOT_MARKER_SUFFIX = '__'\n","export type ValidationBoundaryTracking = {\n /**\n * Map from boundary id (the SegmentPath where a validation boundary is\n * placed) to the file paths of modules inside that boundary's subtree.\n * When the boundary spans multiple parallel slots, each slot contributes\n * its own first-found module path so all unrendered segments can be\n * reported together.\n */\n requiredIds: Map<string, string[]>\n renderedIds: Set<string>\n}\n\nexport function createValidationBoundaryTracking(): ValidationBoundaryTracking {\n return {\n requiredIds: new Map(),\n renderedIds: new Set(),\n }\n}\n\nexport function allRequiredBoundariesRendered(\n state: ValidationBoundaryTracking\n): boolean {\n for (const id of state.requiredIds.keys()) {\n if (!state.renderedIds.has(id)) {\n return false\n }\n }\n return true\n}\n","/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport type {\n WorkUnitStore,\n PrerenderStoreLegacy,\n PrerenderStoreModern,\n ValidationStoreClient,\n PrerenderStoreModernServer,\n} from '../app-render/work-unit-async-storage.external'\n\n// Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react'\n\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n getStagedRenderingController,\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from './work-unit-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport {\n ClientHookDynamicError,\n isClientHookDynamicError,\n makeClientHookHangingPromise,\n trackRuntimeDataAccessed,\n} from '../dynamic-rendering-utils'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from '../../lib/framework/boundary-constants'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport {\n createRuntimeBodyError,\n createDynamicBodyError,\n createRuntimeBodyErrorInNavigation,\n createDynamicBodyErrorInNavigation,\n createDynamicOrRuntimeBodyError,\n createRuntimeMetadataError,\n createDynamicMetadataError,\n createRuntimeViewportError,\n createDynamicViewportError,\n createDynamicOrRuntimeViewportError,\n createDynamicOrRuntimeMetadataError,\n logBuildDebugHint,\n createLinkBodyErrorInNavigation,\n createLinkMetadataError,\n createLinkViewportError,\n} from './blocking-route-messages'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport {\n INSTANT_VALIDATION_BOUNDARY_NAME,\n INSTANT_SLOT_MARKER_PREFIX,\n INSTANT_SLOT_MARKER_SUFFIX,\n} from './instant-validation/boundary-constants'\nimport {\n type ValidationBoundaryTracking,\n allRequiredBoundariesRendered,\n} from './instant-validation/boundary-tracking'\nimport type { InstantValidationSampleTracking } from './instant-validation/instant-samples'\nimport { createUnrenderedSegmentError } from '../../shared/lib/instant-messages'\n\nconst hasPostpone = typeof React.unstable_postpone === 'function'\n\nexport type DynamicAccess = {\n /**\n * If debugging, this will contain the stack trace of where the dynamic access\n * occurred. This is used to provide more information to the user about why\n * their page is being rendered dynamically.\n */\n stack?: string\n\n /**\n * The expression that was accessed dynamically.\n */\n expression: string\n}\n\n// Stores dynamic reasons used during an RSC render.\nexport type DynamicTrackingState = {\n /**\n * When true, stack information will also be tracked during dynamic access.\n */\n readonly isDebugDynamicAccesses: boolean | undefined\n\n /**\n * The dynamic accesses that occurred during the render.\n */\n readonly dynamicAccesses: Array<DynamicAccess>\n\n syncDynamicErrorWithStack: null | Error\n syncDynamicErrorWithStackPostMicrotask: boolean\n}\n\n// Stores dynamic reasons used during an SSR render.\nexport type DynamicValidationState = {\n hasSuspenseAboveBody: boolean\n hasDynamicMetadata: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n}\n\nexport function createDynamicTrackingState(\n isDebugDynamicAccesses: boolean | undefined\n): DynamicTrackingState {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n syncDynamicErrorWithStackPostMicrotask: false,\n }\n}\n\nexport function createDynamicValidationState(): DynamicValidationState {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n }\n}\n\nfunction getPendingClientSyncDynamicError(\n clientDynamic: DynamicTrackingState\n): null | Error {\n return clientDynamic.syncDynamicErrorWithStackPostMicrotask\n ? null\n : clientDynamic.syncDynamicErrorWithStack\n}\n\nexport function getFirstDynamicReason(\n trackingState: DynamicTrackingState\n): undefined | string {\n return trackingState.dynamicAccesses[0]?.expression\n}\n\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */\nexport function markCurrentScopeAsDynamic(\n store: WorkStore,\n workUnitStore: undefined | Exclude<WorkUnitStore, PrerenderStoreModern>,\n expression: string\n): void {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n case 'generate-static-params':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-ppr':\n return postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n case 'generate-static-params':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */\nexport function throwToInterruptStaticGeneration(\n expression: string,\n store: WorkStore,\n prerenderStore: PrerenderStoreLegacy\n): never {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n\n prerenderStore.revalidate = 0\n\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n}\n\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */\nexport function trackDynamicDataInDynamicRender(workUnitStore: WorkUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n break\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction abortOnSynchronousDynamicDataAccess(\n route: string,\n expression: string,\n prerenderStore: PrerenderStoreModern\n): void {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n\n const error = createPrerenderInterruptedError(reason)\n\n prerenderStore.controller.abort(error)\n\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function abortOnSynchronousPlatformIOAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): void {\n const dynamicTracking = prerenderStore.dynamicTracking\n\n if (dynamicTracking && dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n // React completes the task that is currently rendering before scheduled\n // abort cleanup. Client tracking can attribute the sync IO only during\n // that current task; server tracking keeps the error regardless.\n queueMicrotask(() => {\n dynamicTracking.syncDynamicErrorWithStackPostMicrotask = true\n })\n }\n\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n}\n\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */\nexport function abortAndThrowOnSynchronousRequestDataAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): never {\n // The synchronously accessed request data would have been available during\n // a runtime prerender, which would have rendered past this point instead of\n // aborting — so a runtime prefetch would produce more content than this\n // render. Record that, same as when request data access creates a hanging\n // promise (see makeRuntimeHangingPromise). Unlike\n // `abortOnSynchronousPlatformIOAccess`, which aborts a runtime prerender\n // all the same and therefore must not record anything.\n trackRuntimeDataAccessed(prerenderStore)\n\n const prerenderSignal = prerenderStore.controller.signal\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // Preserve the exact server-side dynamic access for final validation after\n // interrupting this render.\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n }\n throw createPrerenderInterruptedError(\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n )\n}\n\n/**\n * This component will call `React.postpone` that throws the postponed error.\n */\ntype PostponeProps = {\n reason: string\n route: string\n}\nexport function Postpone({ reason, route }: PostponeProps): never {\n const prerenderStore = workUnitAsyncStorage.getStore()\n const dynamicTracking =\n prerenderStore && prerenderStore.type === 'prerender-ppr'\n ? prerenderStore.dynamicTracking\n : null\n postponeWithTracking(route, reason, dynamicTracking)\n}\n\nexport function postponeWithTracking(\n route: string,\n expression: string,\n dynamicTracking: null | DynamicTrackingState\n): never {\n assertPostpone()\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n\n React.unstable_postpone(createPostponeReason(route, expression))\n}\n\nfunction createPostponeReason(route: string, expression: string) {\n return (\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` +\n `React throws this special object to indicate where. It should not be caught by ` +\n `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`\n )\n}\n\nexport function isDynamicPostpone(err: unknown) {\n if (\n typeof err === 'object' &&\n err !== null &&\n typeof (err as any).message === 'string'\n ) {\n return isDynamicPostponeReason((err as any).message)\n }\n return false\n}\n\nfunction isDynamicPostponeReason(reason: string) {\n return (\n reason.includes(\n 'needs to bail out of prerendering at this point because it used'\n ) &&\n reason.includes(\n 'Learn more: https://nextjs.org/docs/messages/ppr-caught-error'\n )\n )\n}\n\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw new Error(\n 'Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'\n )\n}\n\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'\n\nfunction createPrerenderInterruptedError(message: string): Error {\n const error = new Error(message)\n ;(error as any).digest = NEXT_PRERENDER_INTERRUPTED\n return error\n}\n\ntype DigestError = Error & {\n digest: string\n}\n\nexport function isPrerenderInterruptedError(\n error: unknown\n): error is DigestError {\n return (\n typeof error === 'object' &&\n error !== null &&\n (error as any).digest === NEXT_PRERENDER_INTERRUPTED &&\n 'name' in error &&\n 'message' in error &&\n error instanceof Error\n )\n}\n\nexport function accessedDynamicData(\n dynamicAccesses: Array<DynamicAccess>\n): boolean {\n return dynamicAccesses.length > 0\n}\n\nexport function consumeDynamicAccess(\n serverDynamic: DynamicTrackingState,\n clientDynamic: DynamicTrackingState\n): DynamicTrackingState['dynamicAccesses'] {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses)\n return serverDynamic.dynamicAccesses\n}\n\nexport function formatDynamicAPIAccesses(\n dynamicAccesses: Array<DynamicAccess>\n): string[] {\n return dynamicAccesses\n .filter(\n (access): access is Required<DynamicAccess> =>\n typeof access.stack === 'string' && access.stack.length > 0\n )\n .map(({ expression, stack }) => {\n stack = stack\n .split('\\n')\n // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4)\n .filter((line) => {\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false\n }\n\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false\n }\n\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false\n }\n\n return true\n })\n .join('\\n')\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`\n })\n}\n\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw new Error(\n `Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`\n )\n }\n}\n\n/**\n * This is a bit of a hack to allow us to abort a render using a Postpone instance instead of an Error which changes React's\n * abort semantics slightly.\n */\nexport function createRenderInBrowserAbortSignal(): AbortSignal {\n const controller = new AbortController()\n controller.abort(new BailoutToCSRError('Render in Browser'))\n return controller.signal\n}\n\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */\nexport function createHangingInputAbortSignal(\n workUnitStore: PrerenderStoreModernServer\n): AbortSignal\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController()\n\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(() => {\n controller.abort()\n })\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the final stage.\n // if an input didn't resolve at that point, then we can assume it never will.\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n\n const stagedRendering = getStagedRenderingController(workUnitStore)\n if (stagedRendering && stagedRendering.finalStage !== null) {\n stagedRendering\n .waitForStage(stagedRendering.finalStage)\n .then(() => scheduleOnNextTick(() => controller.abort()), noop)\n } else {\n scheduleOnNextTick(() => controller.abort())\n }\n }\n\n return controller.signal\n case 'prerender-client':\n case 'validation-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n return undefined\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction noop() {}\n\nexport function annotateDynamicAccess(\n expression: string,\n prerenderStore: PrerenderStoreModern | ValidationStoreClient\n) {\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function useDynamicRouteParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (workStore && workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-client': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n React.use(\n makeClientHookHangingPromise(\n workUnitStore.renderSignal,\n new ClientHookDynamicError(workStore.route, expression)\n )\n )\n }\n break\n }\n case 'prerender':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'prerender-ppr': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(\n workStore.route,\n expression,\n workUnitStore.dynamicTracking\n )\n }\n break\n }\n case 'validation-client': {\n // Don't check fallbackRouteParams here. We handle params that weren't\n // provided in the samples using a proxy that throws when accessed.\n break\n }\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'generate-static-params':\n throw new InvariantError(\n `\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`\n )\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\nexport function useDynamicSearchParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore) {\n // We assume pages router context and just return\n return\n }\n\n if (!workUnitStore) {\n throwForMissingRequestStore(expression)\n }\n\n switch (workUnitStore.type) {\n case 'validation-client':\n // During instant validation we try to behave as close to client as possible,\n // so this shouldn't hang during SSR.\n return\n case 'prerender-client': {\n React.use(\n makeClientHookHangingPromise(\n workUnitStore.renderSignal,\n new ClientHookDynamicError(workStore.route, expression)\n )\n )\n break\n }\n case 'prerender-legacy':\n case 'prerender-ppr': {\n if (workStore.forceStatic) {\n return\n }\n throw new BailoutToCSRError(expression)\n }\n case 'prerender':\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'generate-static-params':\n throw new InvariantError(\n `\\`${expression}\\` was called in \\`generateStaticParams\\`. Next.js should be preventing ${expression} from being included in server component files statically, but did not in this case.`\n )\n case 'request':\n return\n default:\n workUnitStore satisfies never\n }\n}\n\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/\n\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags =\n 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'\n\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(\n `\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`\n)\n\nconst hasMetadataRegex = new RegExp(\n `\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasViewportRegex = new RegExp(\n `\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`)\n\nconst hasInstantValidationBoundaryRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_VALIDATION_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst slotMarkerRegex = new RegExp(\n `\\\\n\\\\s+at ${INSTANT_SLOT_MARKER_PREFIX}(\\\\d+)${INSTANT_SLOT_MARKER_SUFFIX}[\\\\n\\\\s]`\n)\n\n/** Look up the config factory for the slot this error belongs to.\n * Checks the component stack for a slot marker (__next_instant_slot_N__)\n * and returns the config at that index. Falls back to index 0 (root\n * config) when no slot marker is found or the slot has no config. */\nfunction resolveInstantStack(\n componentStack: string,\n dynamicValidation: InstantValidationState\n): (() => Error) | null {\n const { slotStacks } = dynamicValidation\n if (slotStacks.length > 1) {\n const match = slotMarkerRegex.exec(componentStack)\n if (match) {\n // Slot markers are 0-indexed in the component name but\n // slotStacks is 1-indexed (index 0 is the root config).\n const slotIndex = parseInt(match[1], 10) + 1\n const slotStack = slotStacks[slotIndex]\n if (slotStack != null) {\n return slotStack\n }\n }\n }\n // Fall back to root config (index 0)\n return slotStacks[0] ?? null\n}\n\n/**\n * Inspects the component stack of an outlet boundary to discover whether the\n * user placed a Suspense boundary above the document body, and records the\n * opt-in on `dynamicValidation.hasSuspenseAboveBody` if so.\n *\n * The outlet itself isn't a meaningful source of dynamic — it only resolves\n * when metadata/viewport are dynamic, which we track via their own boundaries.\n * However, the outlet renders alongside the page content, so its stack passes\n * through the user's layout chain (typically reaching into `<body>` via the\n * root layout). That makes the outlet stack our best opportunity to spot a\n * Suspense boundary above the body, even when no real body content is dynamic.\n * Without this, a route whose only dynamic source is `generateViewport()` would\n * miss the Suspense-above-body opt-in, because the viewport's stack lives in\n * the head and never sees the user's root layout.\n *\n * We deliberately only set `hasSuspenseAboveBody`, not `hasAllowedDynamic`. The\n * latter tracks whether the body has dynamic content that's been wrapped in\n * Suspense (i.e., the page is partially dynamic). The outlet rendering tells us\n * about the structural opt-in for an empty shell, not about the body being\n * partially dynamic. The distinction matters because dynamic metadata is only\n * acceptable when the page is partially dynamic (via real body holes), and we\n * don't want this outlet-based detection to mask that case.\n */\nfunction trackOutletSuspenseAboveBody(\n componentStack: string,\n dynamicValidation: DynamicValidationState\n): void {\n if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n dynamicValidation.hasSuspenseAboveBody = true\n }\n}\n\nexport function trackAllowedDynamicAccess(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true\n return\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createDynamicOrRuntimeBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport enum DynamicHoleKind {\n /** We know that this hole is caused by link data. */\n Link = 1,\n /** We know that this hole is caused by runtime data. */\n Runtime = 2,\n /** We know that this hole is caused by dynamic data. */\n Dynamic = 3,\n}\n\n/** Stores dynamic reasons used during an SSR render in instant validation. */\nexport type InstantValidationState = {\n hasDynamicMetadata: boolean\n hasAllowedClientDynamicAboveBoundary: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n validationPreventingErrors: Array<Error>\n thrownErrorsOutsideBoundary: Array<unknown>\n /** Per-slot config factories. Index 0 is the root config (fallback).\n * Indices 1+ correspond to slot marker components in the tree. */\n slotStacks: Array<(() => Error) | null>\n}\n\nexport function createInstantValidationState(\n slotStacks: Array<(() => Error) | null>\n): InstantValidationState {\n return {\n hasDynamicMetadata: false,\n hasAllowedClientDynamicAboveBoundary: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n validationPreventingErrors: [],\n thrownErrorsOutsideBoundary: [],\n slotStacks,\n }\n}\n\nexport function trackDynamicHoleInNavigation(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: InstantValidationState,\n clientDynamic: DynamicTrackingState,\n kind: DynamicHoleKind,\n boundaryState: ValidationBoundaryTracking\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n }\n // Resolve the config stack for this specific error. If the error\n // is inside a slot marker, use that slot's config. Otherwise fall\n // back to the default.\n const effectiveCreateInstantStack = resolveInstantStack(\n componentStack,\n dynamicValidation\n )\n\n if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkMetadataError(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeMetadataError(workStore.route)\n : createDynamicMetadataError(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicMetadata = error\n return\n }\n if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkViewportError(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeViewportError(workStore.route)\n : createDynamicViewportError(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // We don't see the validation boundary in the component stack,\n // so this hole must be coming from a shared parent.\n // Shared parents are fully resolved and don't have RSC holes,\n // but they can still suspend in a client component during SSR.\n\n // If we managed to render all the validation boundaries, that means\n // that the client holes aren't blocking validation and we can disregard them.\n // Note that we don't even care whether they have suspense or not.\n if (allRequiredBoundariesRendered(boundaryState)) {\n dynamicValidation.hasAllowedClientDynamicAboveBoundary = true\n dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata\n return\n } else {\n // TODO(instant-validation) TODO(NAR-787)\n // If shared parents blocked us from validating, we should only log\n // the errors from the innermost (segments), i.e. omit layouts whose\n // slots managed to render (because clearly they didn't block validation)\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because a Client Component in a parent segment prevented the page from rendering.`\n const error = addErrorContext(\n new Error(message),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.validationPreventingErrors.push(error)\n return\n }\n } else {\n // The hole originates inside the validation boundary.\n //\n // Check if we have a Suspense above the hole, but below the validation boundary.\n // If we do, then this dynamic usage wouldn't block a navigation to this subtree.\n // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.\n //\n // Note that in the component stack, children come before parents.\n //\n // Valid:\n // ...\n // at Suspense\n // ...\n // at __next_prefetch_validation_boundary__\n //\n // Invalid:\n // ...\n // at __next_prefetch_validation_boundary__\n // ...\n // at Suspense\n //\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n dynamicValidation.hasAllowedDynamic = true\n return\n } else {\n // invalid - fallthrough\n }\n }\n }\n\n if (syncDynamicError) {\n if (\n effectiveCreateInstantStack !== null &&\n syncDynamicError.cause === undefined\n ) {\n syncDynamicError.cause = effectiveCreateInstantStack()\n }\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(\n dynamicReason,\n componentStack,\n effectiveCreateInstantStack\n )\n )\n return\n }\n\n const error = addErrorContext(\n kind === DynamicHoleKind.Link\n ? createLinkBodyErrorInNavigation(workStore.route)\n : kind === DynamicHoleKind.Runtime\n ? createRuntimeBodyErrorInNavigation(workStore.route)\n : createDynamicBodyErrorInNavigation(workStore.route),\n componentStack,\n effectiveCreateInstantStack\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport function trackThrownErrorInNavigation(\n workStore: WorkStore,\n dynamicValidation: InstantValidationState,\n thrownValue: unknown,\n componentStack: string\n) {\n const boundaryLocation =\n hasInstantValidationBoundaryRegex.exec(componentStack)\n if (!boundaryLocation) {\n // There's no validation boundary on the component stack.\n // This error may have blocked a boundary from rendering.\n\n // Wrap the error to provide component context.\n // This helps for errors from node_modules which would otherwise\n // have no useful stack information due to ignore-listing,\n // e.g. next/dynamic with `ssr: false`.\n const error = addErrorContext(\n new Error(\n 'An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.',\n { cause: thrownValue }\n ),\n componentStack,\n null\n )\n dynamicValidation.thrownErrorsOutsideBoundary.push(error)\n } else {\n // There's validation boundary on the component stack,\n // so we know this error didn't block a validation boundary from rendering.\n // However, this error might be hiding be hiding dynamic content that would\n // cause validation to fail.\n const suspenseLocation = hasSuspenseRegex.exec(componentStack)\n if (suspenseLocation) {\n if (suspenseLocation.index < boundaryLocation.index) {\n // There's a Suspense below the validation boundary but above this error's location.\n // This subtree can't fail instant validation because any potential\n // dynamic holes would be guarded by the Suspense anyway,\n // so we can allow this.\n return\n } else {\n // invalid - fallthrough\n }\n }\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because an error prevented the target segment from rendering.`\n const error = addErrorContext(\n new Error(message, { cause: thrownValue }),\n componentStack,\n null // TODO(instant-validation-build): conflicting use of cause\n )\n dynamicValidation.validationPreventingErrors.push(error)\n }\n}\n\nexport function trackDynamicHoleInRuntimeShell(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createDynamicMetadataError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createDynamicViewportError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createDynamicBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\nexport function trackDynamicHoleInStaticShell(\n dynamicReason: unknown,\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic)\n\n if (hasOutletRegex.test(componentStack)) {\n trackOutletSuspenseAboveBody(componentStack, dynamicValidation)\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const error = addErrorContext(\n createRuntimeMetadataError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const error = addErrorContext(\n createRuntimeViewportError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (syncDynamicError) {\n dynamicValidation.dynamicErrors.push(syncDynamicError)\n return\n }\n\n if (isClientHookDynamicError(dynamicReason)) {\n dynamicValidation.dynamicErrors.push(\n addErrorContext(dynamicReason, componentStack, null)\n )\n return\n }\n\n const error = addErrorContext(\n createRuntimeBodyError(workStore.route),\n componentStack,\n null\n )\n dynamicValidation.dynamicErrors.push(error)\n return\n}\n\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n *\n * Accepts an already-created Error so the SWC error-code plugin can see the\n * `new Error(...)` call at each call site and auto-assign error codes.\n */\nfunction addErrorContext(\n error: Error,\n componentStack: string,\n createInstantStack: (() => Error) | null\n) {\n const ownerStack =\n process.env.NODE_ENV !== 'production' && React.captureOwnerStack\n ? React.captureOwnerStack()\n : null\n\n if (createInstantStack !== null) {\n error.cause = createInstantStack()\n }\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack =\n error.name + ': ' + error.message + (ownerStack || componentStack)\n return error\n}\n\nexport enum PreludeState {\n Full = 0,\n Empty = 1,\n Errored = 2,\n}\n\nexport function logDisallowedDynamicError(\n workStore: WorkStore,\n error: Error\n): void {\n console.error(error)\n logBuildDebugHint(workStore.route)\n}\n\nexport function throwIfSyncIOUsed(\n workStore: WorkStore,\n serverDynamic: DynamicTrackingState\n) {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(\n workStore,\n serverDynamic.syncDynamicErrorWithStack\n )\n throw new StaticGenBailoutError()\n }\n}\n\nexport function throwIfDisallowedDynamic(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState,\n allowEmptyStaticShell: boolean\n): void {\n throwIfSyncIOUsed(workStore, serverDynamic)\n\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.hasDynamicMetadata\n ) {\n console.error(createDynamicOrRuntimeMetadataError(workStore.route).message)\n throw new StaticGenBailoutError()\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n for (let i = 0; i < dynamicErrors.length; i++) {\n logDisallowedDynamicError(workStore, dynamicErrors[i])\n }\n\n throw new StaticGenBailoutError()\n }\n\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(\n createDynamicOrRuntimeViewportError(workStore.route).message\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`\n )\n throw new StaticGenBailoutError()\n }\n }\n}\n\nexport function getStaticShellDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n allowEmptyStaticShell: boolean\n): Array<Error> {\n // The dynamic metadata error is a mistake-detection signal. It fires when the\n // rest of the shell is otherwise fully static apart from metadata, suggesting\n // the dynamic data access in `generateMetadata` was probably unintentional.\n // That condition is independent of whether the user or build phase accepted\n // an empty shell, so we surface it before any opt-in bypass.\n if (\n prelude === PreludeState.Full &&\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicErrors.length === 0 &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n\n // Either flag expresses \"this shell is allowed to be empty/blocking\":\n // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)\n // and the build-phase fallback-shell case.\n // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root\n // layout.\n // Treat them as synonyms for the purpose of bypassing shell-failure errors.\n if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {\n return []\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n\n/**\n * `errors` are validation failures that should be surfaced immediately.\n * `deferredFallback` carries a missing-boundary explanation that the caller\n * should hold back until *every* validation depth has been tried — a missing\n * boundary often just means a parent layout intentionally omitted a slot, and\n * a different depth's validation may surface a more meaningful error.\n */\nexport type NavigationValidationResult =\n // instances that block instant navigation\n | Array<Error>\n // validation was blocked with zero or more reasons\n | Error\n | AggregateError\n\nexport function getNavigationDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: InstantValidationState,\n validationSampleTracking: InstantValidationSampleTracking | null,\n boundaryState: ValidationBoundaryTracking,\n devRenderDidError: boolean\n): NavigationValidationResult {\n // If we have errors related to missing samples, those should take precedence over everything else.\n if (validationSampleTracking) {\n const { missingSampleErrors } = validationSampleTracking\n if (missingSampleErrors.length > 0) {\n return missingSampleErrors\n }\n }\n\n const { validationPreventingErrors } = dynamicValidation\n if (validationPreventingErrors.length > 0) {\n if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // The dev render already surfaced server errors to the user.\n // The same errors likely caused validation to be inconclusive,\n // so reporting them again as validation failures would be noisy.\n return []\n }\n return validationPreventingErrors\n }\n\n // NOTE: We don't care about Suspense above body here,\n // we're only concerned with the validation boundary\n if (prelude !== PreludeState.Full) {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n prelude === PreludeState.Empty &&\n !dynamicValidation.hasAllowedClientDynamicAboveBoundary &&\n allRequiredBoundariesRendered(boundaryState)\n ) {\n // If we ever get this far then we messed up the tracking of invalid\n // dynamic. (When boundaries are missing the deferred fallback below\n // will surface a more useful error.)\n return new InvariantError(\n `Route \"${workStore.route}\" failed to render during instant validation and Next.js was unable to determine a reason.`\n )\n }\n } else {\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n }\n\n // Missing boundaries on their own aren't a strong signal — a parent\n // layout may legitimately omit a slot. Defer this so the caller can\n // try shallower validation depths first; if every depth comes up\n // empty we still want to surface this so the user is made aware that\n // validation didn't complete. When we add a markers API, the\n // marker-based variant of this check can become strict again.\n if (!allRequiredBoundariesRendered(boundaryState)) {\n const { thrownErrorsOutsideBoundary } = dynamicValidation\n const rootInstantStack = dynamicValidation.slotStacks[0]\n if (thrownErrorsOutsideBoundary.length === 0) {\n const missingFiles: string[] = []\n for (const [id, filePaths] of boundaryState.requiredIds) {\n if (!boundaryState.renderedIds.has(id)) {\n for (const filePath of filePaths) {\n let normalized = filePath\n .replace(/^\\[project\\][\\\\/]?/, '')\n .replace(process.cwd() + '/', '')\n .replace(process.cwd() + '\\\\', '')\n missingFiles.push(normalized)\n }\n }\n }\n missingFiles.sort()\n return createUnrenderedSegmentError(workStore.route, missingFiles)\n } else if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {\n // Errors outside the boundary likely blocked it from rendering,\n // but they're already being reported to the user via the dev\n // render. Suppress the validation failure to avoid noise.\n return []\n } else if (thrownErrorsOutsideBoundary.length === 1) {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to the following error.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n thrownErrorsOutsideBoundary[0] as Error,\n ])\n } else {\n const message = `Route \"${workStore.route}\": Could not validate \\`instant\\` because the target segment was prevented from rendering, likely due to one of the following errors.`\n const error = rootInstantStack !== null ? rootInstantStack() : new Error()\n error.name = 'Error'\n error.message = message\n return new AggregateError([\n error,\n ...(thrownErrorsOutsideBoundary as Error[]),\n ])\n }\n }\n\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n","// Client-safe access to the server-only dynamic-rendering hooks used by the\n// navigation hooks. On the server these re-export the real implementations; in\n// the browser bundle this module is aliased to\n// `./navigation-dynamic-rendering.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined` so\n// the server module is not bundled into the client. Callers use optional calls\n// (`useDynamicRouteParams?.(...)`), so the browser stub is a no-op.\nexport {\n useDynamicRouteParams,\n useDynamicSearchParams,\n} from '../../server/app-render/dynamic-rendering'\n","import { InvariantError } from '../../shared/lib/invariant-error'\nimport { createPromiseWithResolvers } from '../../shared/lib/promise-with-resolvers'\n\nexport enum RenderStage {\n Before = 1,\n //\n ShellStatic = 11,\n Static = 13,\n //\n ShellRuntime = 21,\n Runtime = 23,\n //\n Dynamic = 30,\n //\n Abandoned = 40,\n}\n\nexport type AdvanceableRenderStage = Exclude<\n RenderStage,\n RenderStage.Before | RenderStage.Abandoned\n>\n\nexport const RENDER_STAGE_ADVANCE_ORDER: AdvanceableRenderStage[] = [\n RenderStage.ShellStatic,\n RenderStage.Static,\n //\n RenderStage.ShellRuntime,\n RenderStage.Runtime,\n //\n RenderStage.Dynamic,\n]\n\nexport function getNextStage(\n stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>\n) {\n return RENDER_STAGE_ADVANCE_ORDER[\n RENDER_STAGE_ADVANCE_ORDER.indexOf(stage) + 1\n ]\n}\n\nexport function isAdvanceableRenderStage(\n stage: RenderStage\n): stage is AdvanceableRenderStage {\n return RenderStage.Before < stage && stage <= RenderStage.Dynamic\n}\n\nexport enum SyncIOMode {\n /** Sync IO does not error in any stage. */\n Untracked = 1,\n /** Before `partialPrefetching`: Sync IO errors in static stages, and is allowed otherwise. */\n AllowedInRuntimeOrDynamic = 2,\n /** After `partialPrefetching`: Sync IO errors in all stages other than dynamic. */\n AllowedInDynamic = 3,\n}\n\nexport class StagedRenderingController {\n private abortSignal: AbortSignal | null\n private abandonController: AbortController | null\n private syncIOMode: SyncIOMode\n public readonly finalStage: AdvanceableRenderStage | null\n\n currentStage: RenderStage = RenderStage.Before\n\n syncInterruptReason: Error | null = null\n\n triggers: Record<AdvanceableRenderStage, StageTrigger> = {\n [RenderStage.ShellStatic]: createStageTrigger(),\n [RenderStage.Static]: createStageTrigger(),\n //\n [RenderStage.ShellRuntime]: createStageTrigger(),\n [RenderStage.Runtime]: createStageTrigger(),\n //\n [RenderStage.Dynamic]: createStageTrigger(),\n }\n\n constructor({\n abortSignal,\n abandonController,\n syncIO,\n finalStage,\n }: {\n abortSignal: AbortSignal | null\n abandonController: AbortController | null\n syncIO: SyncIOMode\n finalStage: AdvanceableRenderStage | null\n }) {\n this.abortSignal = abortSignal\n this.abandonController = abandonController\n this.syncIOMode = syncIO\n this.finalStage = finalStage\n\n if (abortSignal) {\n abortSignal.addEventListener(\n 'abort',\n () => {\n // Reject all stage promises that haven't already been resolved.\n // `cancelStageTrigger` is a noop if the trigger already resolved.\n const { reason } = abortSignal\n for (const trigger of Object.values(this.triggers)) {\n cancelStageTrigger(trigger, reason)\n }\n },\n { once: true }\n )\n }\n\n if (abandonController) {\n abandonController.signal.addEventListener(\n 'abort',\n () => {\n this.abandonRender()\n },\n { once: true }\n )\n }\n }\n\n onStage(stage: AdvanceableRenderStage, callback: () => void) {\n addSyncTriggerListener(this.triggers[stage], callback)\n }\n\n shouldTrackSyncInterrupt(): boolean {\n if (this.syncIOMode === SyncIOMode.Untracked) {\n return false\n }\n\n switch (this.currentStage) {\n case RenderStage.Before:\n // If we haven't started the render yet, it can't be interrupted.\n return false\n case RenderStage.ShellStatic:\n case RenderStage.Static:\n return true\n case RenderStage.ShellRuntime:\n case RenderStage.Runtime: {\n switch (this.syncIOMode) {\n case SyncIOMode.AllowedInRuntimeOrDynamic: {\n // Before `partialPrefetching`: Sync IO only errors in static stages.\n return false\n }\n case SyncIOMode.AllowedInDynamic: {\n return true\n }\n }\n // NOT a fallthrough, but eslint doesn't understand that\n }\n case RenderStage.Dynamic:\n case RenderStage.Abandoned:\n return false\n default:\n this.currentStage satisfies never\n return false\n }\n }\n\n /** Note: only call this if `shouldTrackSyncInterrupt()` returned true */\n syncInterruptCurrentStageWithReason(reason: Error) {\n const { currentStage } = this\n if (\n currentStage === RenderStage.Before ||\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Not interruptible. Defensive noop.\n return\n }\n\n // If Sync IO occurs during an abandonable render, we trigger the abandon.\n // The abandon listener will call abandonRender which advances through\n // stages to let caches fill before marking as Abandoned.\n if (this.abandonController) {\n this.abandonController.abort()\n return\n }\n\n if (this.abortSignal) {\n // If this is an abortable render, we capture the interruption reason and stop advancing.\n // We don't release any more promises.\n // The caller is expected to abort the signal.\n this.syncInterruptReason = reason\n this.currentStage = RenderStage.Abandoned\n return\n }\n\n // If we're in a non-abandonable & non-abortable render,\n // we need to advance to the Dynamic stage and capture the interruption reason.\n // (in dev, this will be the restarted render)\n this.syncInterruptReason = reason\n this.advanceStage(RenderStage.Dynamic)\n }\n\n getSyncInterruptReason() {\n return this.syncInterruptReason\n }\n\n getStageEndTime(stage: Exclude<AdvanceableRenderStage, RenderStage.Dynamic>) {\n return this.triggers[getNextStage(stage)].triggeredAt ?? Infinity\n }\n\n private abandonRender() {\n // In staged rendering, only the initial render is abandonable.\n // We can abandon the initial render if\n // 1. We notice a cache miss, and need to wait for caches to fill\n // 2. A sync IO error occurs, and the render should be interrupted\n // (this might be a lazy intitialization of a module,\n // so we still want to restart in this case and see if it still occurs)\n // In either case, we'll be doing another render after this one,\n // so we only want to unblock the next stage, not Dynamic, because\n // unblocking the dynamic stage would likely lead to wasted (uncached) IO.\n\n const { currentStage } = this\n\n if (currentStage === RenderStage.Before) {\n throw new InvariantError(\n \"A render that hasn't started yet cannot be abandoned\"\n )\n }\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // We shouldn't ever trigger an abandon in these. Defensive noop.\n return\n }\n\n // Resolve all stages after the current one, up to runtime (excluding dynamic)\n const nextStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const dynamicStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(\n RenderStage.Dynamic\n )\n for (let i = nextStageIx; i < dynamicStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n\n this.currentStage = RenderStage.Abandoned\n }\n\n advanceStage(targetStage: AdvanceableRenderStage) {\n if (this.finalStage !== null && targetStage > this.finalStage) {\n throw new InvariantError(\n `Attempted to advance to stage ${RenderStage[targetStage]} but the render is limited to ${RenderStage[this.finalStage]}`\n )\n }\n const { currentStage } = this\n\n if (\n currentStage === RenderStage.Dynamic ||\n currentStage === RenderStage.Abandoned\n ) {\n // Terminal stages, nowhere left to advance.\n return\n }\n\n // If we're already at the target stage or beyond, do nothing.\n if (targetStage <= currentStage) {\n return\n }\n\n this.currentStage = targetStage\n\n // Resolve all stages between the current stage and the target.\n const nextStageIx =\n currentStage === RenderStage.Before\n ? 0\n : RENDER_STAGE_ADVANCE_ORDER.indexOf(currentStage) + 1\n const targetStageIx = RENDER_STAGE_ADVANCE_ORDER.indexOf(targetStage)\n for (let i = nextStageIx; i <= targetStageIx; i++) {\n this.resolveStage(RENDER_STAGE_ADVANCE_ORDER[i])\n }\n }\n\n private resolveStage(stage: AdvanceableRenderStage) {\n fireStageTrigger(this.triggers[stage])\n }\n\n private getStagePromise(stage: AdvanceableRenderStage): Promise<void> {\n return this.triggers[stage].promise\n }\n\n waitForStage(stage: AdvanceableRenderStage) {\n return this.getStagePromise(stage)\n }\n\n delayUntilStage<T>(\n stage: AdvanceableRenderStage,\n displayName: string | undefined,\n resolvedValue: T\n ): Promise<T> {\n const stagePromise = this.getStagePromise(stage)\n\n const promise =\n process.env.NODE_ENV === 'development'\n ? makeDevtoolsIOPromiseFromIOTrigger(\n stagePromise,\n displayName,\n resolvedValue\n )\n : stagePromise.then(() => resolvedValue)\n\n // Analogously to `makeDynamicHangingPromise`, we might reject this promise if the signal is invoked.\n // (e.g. in the case where we don't want want the render to proceed to the dynamic stage and abort it).\n // We shouldn't consider this an unhandled rejection, so we attach a noop catch handler here to suppress this warning.\n if (this.abortSignal) {\n promise.catch(ignoreReject)\n }\n return promise\n }\n}\n\nfunction ignoreReject() {}\n\n// TODO(restart-on-cache-miss): the layering of `delayUntilStage`,\n// `makeDevtoolsIOPromiseFromIOTrigger` and and `makeDevtoolsIOAwarePromise`\n// is confusing, we should clean it up.\nfunction makeDevtoolsIOPromiseFromIOTrigger<T>(\n ioTrigger: Promise<any>,\n displayName: string | undefined,\n resolvedValue: T\n): Promise<T> {\n // If we create a `new Promise` and give it a displayName\n // (with no userspace code above us in the stack)\n // React Devtools will use it as the IO cause when determining \"suspended by\".\n // In particular, it should shadow any inner IO that resolved/rejected the promise\n // (in case of staged rendering, this will be the `setTimeout` that triggers the relevant stage)\n const promise = new Promise<T>((resolve, reject) => {\n ioTrigger.then(resolve.bind(null, resolvedValue), reject)\n })\n if (displayName !== undefined) {\n // @ts-expect-error\n promise.displayName = displayName\n }\n return promise\n}\n\ntype StageTrigger = {\n state: 'pending' | 'triggered' | 'cancelled'\n triggeredAt: number | null\n promise: Promise<void>\n _listeners: Array<() => void>\n _resolvePromise: () => void\n _rejectPromise: (reason: unknown) => void\n}\n\nfunction addSyncTriggerListener(trigger: StageTrigger, listener: () => void) {\n if (trigger.state === 'pending') {\n trigger._listeners.push(listener)\n } else {\n listener()\n }\n}\n\nfunction createStageTrigger(): StageTrigger {\n const { promise, resolve, reject } = createPromiseWithResolvers<void>()\n return {\n state: 'pending',\n triggeredAt: null,\n promise,\n _listeners: [],\n _resolvePromise: resolve,\n _rejectPromise: reject,\n }\n}\n\nfunction fireStageTrigger(trigger: StageTrigger) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'triggered'\n trigger.triggeredAt = performance.now() + performance.timeOrigin\n try {\n const { _listeners: listeners } = trigger\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n listeners.length = 0\n } finally {\n trigger._resolvePromise()\n }\n}\n\nfunction cancelStageTrigger(trigger: StageTrigger, reason: unknown) {\n if (trigger.state !== 'pending') {\n return\n }\n trigger.state = 'cancelled'\n // we didn't trigger, so don't save `triggeredAt`.\n\n // We're not gonna fire the listeners, we may as well free them.\n trigger._listeners.length = 0\n\n // Suppress unhandled rejection warnings for promises that no one is awaiting.\n trigger.promise.catch(ignoreReject)\n trigger._rejectPromise(reason)\n}\n","import {\n RenderStage,\n type AdvanceableRenderStage,\n} from './app-render/staged-rendering'\nimport type {\n RequestStore,\n WorkUnitStore,\n} from './app-render/work-unit-async-storage.external'\nimport { workUnitAsyncStorage } from './app-render/work-unit-async-storage.external'\nimport { getServerReact, getClientReact } from './runtime-reacts.external'\n\nexport function isHangingPromiseRejectionError(\n err: unknown\n): err is HangingPromiseRejectionError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === HANGING_PROMISE_REJECTION\n}\n\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'\n\nclass HangingPromiseRejectionError extends Error {\n public readonly digest = HANGING_PROMISE_REJECTION\n\n constructor(\n public readonly route: string,\n public readonly expression: string\n ) {\n super(\n `During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`\n )\n }\n}\n\nconst CLIENT_HOOK_DYNAMIC = 'CLIENT_HOOK_DYNAMIC'\n\nexport class ClientHookDynamicError extends Error {\n public readonly digest = CLIENT_HOOK_DYNAMIC\n\n constructor(route: string, expression: string) {\n super(\n `Route \"${route}\": Next.js encountered URL data \\`${expression}\\` in a Client Component outside of \\`<Suspense>\\`.\\n\\n` +\n `This blocks prerendering because the value is only available at runtime.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [stream] Wrap the component in \\`<Suspense fallback={...}>\\` so the hook value streams in after prerendering\\n` +\n ` - [block] Set \\`export const instant = false\\` to allow a blocking route\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/blocking-prerender-client-hook`\n )\n }\n}\n\nexport function isClientHookDynamicError(\n err: unknown\n): err is ClientHookDynamicError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === CLIENT_HOOK_DYNAMIC\n}\n\ntype AbortListeners = Array<() => void>\nconst abortListenersBySignal = new WeakMap<AbortSignal, AbortListeners>()\n\n/**\n * Constructs a promise that never resolves, standing in for *dynamic* data:\n * data that is only available during a real dynamic request and hangs in\n * every kind of prerender — `io()`, `connection()`, uncached `fetch()`.\n *\n * This is primarily useful for cacheComponents where we use promise\n * resolution timing to determine which parts of a render can be included in a\n * prerender.\n *\n * Records nothing on the prerender store: the promise's holes are only ever\n * filled by a real dynamic request, so a runtime prefetch response would have\n * the same holes as the static one. If the data source would resolve during a\n * runtime prerender, use `makeRuntimeHangingPromise` instead.\n *\n * @internal\n */\nexport function makeDynamicHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\nexport function makeUntrackedHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for *runtime* data:\n * data that hangs during a static prerender but is available during a runtime\n * prerender (the kind that backs a runtime prefetch request: request data\n * like cookies and headers is available, but the render is still not a real\n * dynamic request). Examples: cookies, headers, fallback params,\n * searchParams, and cache entries that are excluded only from static\n * prerenders.\n *\n * Creating one of these during a static prerender records on the prerender\n * store that a runtime prefetch would produce more content than the static\n * response (`runtimeDataAccessed`), which the segment prefetch encoding uses\n * to tell the client whether a runtime prefetch request could be skipped.\n *\n * When unsure whether data is dynamic or runtime, prefer this method — the\n * cost of over-recording is a redundant runtime prefetch request; the cost of\n * under-recording is a permanently missing one.\n *\n * `workUnitStore` may be null ONLY when the caller tracks the access itself\n * at observation time instead of creation time. This is for promises the\n * framework creates eagerly whether or not anything reads them (e.g. the\n * `searchParams` prop constructed for every page): recording at creation\n * would mark every render. Such a caller MUST call `trackRuntimeDataAccessed`\n * from every path that observes the promise (e.g. the proxy traps for\n * `then`/`status`), against the work unit store active at access time.\n *\n * For fallback-param data — data a concrete (ISR-upgraded) prerender would\n * resolve — use `makeFallbackParamsHangingPromise` instead, so the access\n * is recorded with the right effect on the static-prefetch hint.\n *\n * @internal\n */\nexport function makeRuntimeHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n if (workUnitStore !== null) {\n trackRuntimeDataAccessed(workUnitStore)\n }\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Variant of `makeRuntimeHangingPromise` for *fallback-param* data: fallback\n * route params and values derived solely from them (`params`, `rootParams`,\n * `pathname` during a fallback prerender). Like every runtime data access it\n * records the access on the prerender store's response-level flag, but its\n * effect on the build-time static-prefetch hint differs — on a\n * fallback-upgradeable route the access is transient (a concrete prerender\n * resolves it), so it leaves the hint intact. See\n * `trackFallbackParamsAccessed`.\n *\n * As with `makeRuntimeHangingPromise`, `workUnitStore` may be null ONLY when\n * the caller tracks the access itself at observation time instead of creation\n * time, by calling `trackFallbackParamsAccessed` from every path that\n * observes the promise.\n *\n * @internal\n */\nexport function makeFallbackParamsHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore | null\n): Promise<T> {\n if (workUnitStore !== null) {\n trackFallbackParamsAccessed(workUnitStore)\n }\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Constructs a promise that never resolves, standing in for data that is only\n * accessible in a later *stage* of rendering than this render reaches — e.g.\n * a prefetchable short-stale cache entry that's excluded from shells when the\n * render ends at the shell stage, or params during a runtime-prefetch render\n * that stops before the stage where params resolve.\n *\n * A render that runs through the later stage would include the data; in\n * particular a runtime prefetch renders through its later stages, so on a\n * static prerender store this records `runtimeDataAccessed`, same as\n * `makeRuntimeHangingPromise`.\n *\n * @internal\n */\nexport function makeStageHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string,\n workUnitStore: WorkUnitStore\n): Promise<T> {\n trackRuntimeDataAccessed(workUnitStore)\n return makeHangingPromiseWithError(\n signal,\n new HangingPromiseRejectionError(route, expression)\n )\n}\n\n/**\n * Records on a static prerender store that the render accessed a data source\n * which would have resolved during a runtime prerender. No-op for all other\n * store types.\n *\n * `makeRuntimeHangingPromise` and `makeStageHangingPromise` call this\n * automatically; call it directly only where the access is observed\n * separately from the promise's creation (see the null `workUnitStore` case\n * of `makeRuntimeHangingPromise`), or where the prerender is aborted\n * synchronously instead of hanging.\n *\n * For fallback-param data, use `trackFallbackParamsAccessed` instead. When\n * unsure, this is the conservative choice: it unconditionally clears the\n * static-prefetch hint.\n */\nexport function trackRuntimeDataAccessed(workUnitStore: WorkUnitStore): void {\n trackRuntimeDataAccessedImpl(workUnitStore, false)\n}\n\n/**\n * Fallback-param variant of `trackRuntimeDataAccessed`, for accesses of\n * fallback route params and values derived solely from them. It records the\n * response-level flag all the same, but only clears the build-time\n * static-prefetch hint when the route is not fallback-upgradeable — on an\n * upgradeable route the access is transient, since ISR later produces a\n * concrete prerender that resolves it.\n */\nexport function trackFallbackParamsAccessed(\n workUnitStore: WorkUnitStore\n): void {\n trackRuntimeDataAccessedImpl(workUnitStore, true)\n}\n\nfunction trackRuntimeDataAccessedImpl(\n workUnitStore: WorkUnitStore,\n isFallbackParamAccess: boolean\n): void {\n switch (workUnitStore.type) {\n case 'prerender': {\n // Response-level flag (the payload's `u`, forwarded to segment\n // responses as `needsRuntimeRequest`): resolved for every kind of\n // access — a pre-upgrade fallback response must keep reporting that\n // a runtime request would return more. The fulfillment row lands at\n // the current position in the Flight stream, which is what makes the\n // value rewindable per stage. Promise resolution is idempotent, so\n // repeated accesses are free.\n workUnitStore.runtimeDataAccessed?.resolve(true)\n\n // Hint cell (holds the build-constant\n // PrefetchHint.ShouldAttemptStaticPrefetch value directly): a\n // fallback-param access is transient when the route is\n // fallback-upgradeable — ISR later produces the concrete prerender a\n // static prefetch attempt would hit — so it leaves the hint intact.\n // (Until that upgrade, the response-level flag above keeps directing\n // the client to a runtime fallback; the hint only costs a wasted\n // static attempt in the interim.) Every other access clears it.\n const hintCell = workUnitStore.shouldAttemptStaticPrefetch\n if (\n hintCell !== null &&\n (!isFallbackParamAccess || !workUnitStore.isFallbackUpgradeable)\n ) {\n hintCell.current = false\n }\n break\n }\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'validation-client':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'generate-static-params':\n // Only the modern server prerender tracks this; see the field docs on\n // PrerenderStoreModernServer.\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nexport function makeClientHookHangingPromise<T>(\n signal: AbortSignal,\n error: ClientHookDynamicError\n): Promise<T> {\n return makeHangingPromiseWithError(signal, error)\n}\n\nfunction makeHangingPromiseWithError<T>(\n signal: AbortSignal,\n error: Error\n): Promise<T> {\n if (signal.aborted) {\n return Promise.reject(error)\n } else {\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(null, error)\n let currentListeners = abortListenersBySignal.get(signal)\n if (currentListeners) {\n currentListeners.push(boundRejection)\n } else {\n const listeners = [boundRejection]\n abortListenersBySignal.set(signal, listeners)\n signal.addEventListener(\n 'abort',\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n },\n { once: true }\n )\n }\n })\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject)\n return hangingPromise\n }\n}\n\nfunction ignoreReject() {}\n\n/**\n * Creates a promise that will be triggered when another promise resolves.\n * It will not emit unhandled rejections, which is important if the trigger\n * is a promise that might itself get rejected (e.g. when a prerender/render\n * are aborted due to sync IO)\n */\nexport function makePromiseFromTrigger<T>(\n trigger: Promise<any>,\n value: T\n): Promise<T> {\n const promise = trigger.then(() => value)\n promise.catch(ignoreReject)\n return promise\n}\n\nexport function makeDevtoolsIOAwarePromise<T>(\n underlying: T,\n requestStore: RequestStore,\n stage: AdvanceableRenderStage\n): Promise<T> {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(\n stage,\n undefined,\n underlying\n )\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise<T>((resolve) => {\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(() => {\n resolve(underlying)\n }, 0)\n })\n}\n\nexport const RENDER_STAGES_BY_DATA_KIND = {\n sessionData: RenderStage.ShellRuntime as const,\n staticLinkData: RenderStage.Static as const,\n runtimeLinkData: RenderStage.Runtime as const,\n}\n\nexport function applyOwnerStack(error: Error): Error {\n if (process.env.NODE_ENV !== 'production') {\n let ownerStack: string | undefined | null\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n // captureOwnerStack() returns the owner stack for the current React\n // rendering context. Inside a cache scope this only includes the inner\n // component tree. The outer owner stack (captured before entering the\n // cache boundary in use-cache-wrapper.ts) is stored on the cache store.\n // We concatenate both to get the full component tree.\n const innerOwnerStack =\n getClientReact()?.captureOwnerStack?.() ??\n getServerReact()?.captureOwnerStack?.()\n\n switch (workUnitStore?.type) {\n case 'cache':\n case 'private-cache':\n ownerStack =\n (innerOwnerStack || '') + (workUnitStore.outerOwnerStack || '') ||\n undefined\n break\n case 'unstable-cache':\n case 'request':\n case 'prerender':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'prerender-runtime':\n case 'prerender-client':\n case 'validation-client':\n case 'generate-static-params':\n case undefined:\n ownerStack = innerOwnerStack\n break\n default:\n workUnitStore satisfies never\n }\n\n if (ownerStack) {\n let stack = ownerStack\n\n if (error.stack) {\n const frames: string[] = []\n\n for (const frame of error.stack.split('\\n').slice(1)) {\n if (frame.includes('react_stack_bottom_frame')) {\n break\n }\n\n frames.push(frame)\n }\n\n stack = '\\n' + frames.join('\\n') + stack\n }\n\n error.stack = error.name + ': ' + error.message + stack\n }\n }\n\n return error\n}\n","export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'\n","export type ScheduledFn<T = void> = () => T | PromiseLike<T>\nexport type SchedulerFn<T = void> = (cb: ScheduledFn<T>) => void\n\n/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */\nexport const scheduleOnNextTick = (cb: ScheduledFn<void>) => {\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(() => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n process.nextTick(cb)\n }\n })\n}\n\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */\nexport const scheduleImmediate = (cb: ScheduledFn<void>): void => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n setImmediate(cb)\n }\n}\n\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */\nexport function atLeastOneTask() {\n return new Promise<void>((resolve) => scheduleImmediate(resolve))\n}\n\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */\nexport function waitAtLeastOneReactRenderTask(): Promise<void> {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r) => setTimeout(r, 0))\n } else {\n return new Promise((r) => setImmediate(r))\n }\n}\n","export function createUnrenderedSegmentError(\n route: string,\n missingFiles: readonly string[]\n): Error {\n let message = `Route \"${route}\": Could not validate that a segment in your UI has instant navigation.`\n if (missingFiles.length > 0) {\n const label =\n missingFiles.length === 1 ? 'Dropped segment' : 'Dropped segments'\n message +=\n `\\n\\nThis segment was dropped from rendering. Issues that would prevent instant navigation will go undetected.` +\n `\\n\\n${label}:\\n${missingFiles.map((p) => ` ${p}`).join('\\n')}` +\n `\\n\\nWays to fix this:` +\n `\\n - [render] Render the dropped segment` +\n `\\n - [ignore] Set \\`export const instant = false\\` to opt the dropped segment out of instant-navigation validation` +\n `\\n\\nLearn more: https://nextjs.org/docs/messages/instant-unrendered-segment`\n }\n return new Error(message)\n}\n\nexport function createLinkPrefetchPartialError(pathname: string): Error {\n return new Error(\n `Next.js encountered dynamic data during prefetching for \"${pathname}\".\\n\\n` +\n `This will lead to slower, more expensive prefetches.\\n\\n` +\n `Ways to fix this:\\n` +\n ` - [upgrade] Opt into Partial Prefetching by exporting \\`const prefetch = 'partial'\\` from the page or layout, or by setting \\`partialPrefetching: true\\` in next.config to opt the whole app in\\n` +\n ` - [disable] Remove \\`prefetch={true}\\` from the <Link> to use the default prefetch\\n` +\n ` - [ignore] Set \\`export const instant = false\\` to opt the route out of instant-navigation validation\\n\\n` +\n `Learn more: https://nextjs.org/docs/messages/instant-link-prefetch-partial`\n )\n}\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nexport class BailoutToCSRError extends Error {\n public readonly digest = BAILOUT_TO_CSR\n\n constructor(public readonly reason: string) {\n super(`Bail out to client-side rendering: ${reason}`)\n }\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === BAILOUT_TO_CSR\n}\n","export function createPromiseWithResolvers<T>(): PromiseWithResolvers<T> {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike<T>) => void\n let reject: (reason: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","\"use client\"\r\n\r\nimport { createContext, useContext, useState, useEffect, useCallback, useRef } from \"react\"\r\nimport { flushSync } from \"react-dom\"\r\nimport { useRouter } from \"next/navigation\"\r\nimport type { Task, TaskBoard, ActivityEvent, Project } from \"@/lib/core\"\r\nimport type { Summary, SelectedDoc } from \"@/types\"\r\nimport { DEFAULT_SETTINGS, type AppSettings } from \"@/lib/settings\"\r\n\r\ninterface AppContextValue {\r\n projects: Project[]\r\n activeProject: string\r\n summary: Summary | null\r\n board: TaskBoard | null\r\n activity: ActivityEvent[]\r\n liveIndicator: boolean\r\n loading: boolean\r\n selectedDoc: SelectedDoc | null\r\n setSelectedDoc: (doc: SelectedDoc | null) => void\r\n rootParam: string\r\n onProjectChange: (root: string) => void\r\n refresh: (root?: string) => Promise<void>\r\n moveTask: (taskId: string, status: string) => Promise<void>\r\n openDoc: (path: string) => Promise<void>\r\n editorSettings: AppSettings[\"editor\"]\r\n setEditorSettings: (s: AppSettings[\"editor\"]) => void\r\n autoRefreshSeconds: number\r\n setAutoRefreshSeconds: (n: number) => void\r\n}\r\n\r\nconst AppContext = createContext<AppContextValue | null>(null)\r\n\r\nexport function useApp(): AppContextValue {\r\n const ctx = useContext(AppContext)\r\n if (!ctx) throw new Error(\"useApp must be used inside AppProvider\")\r\n return ctx\r\n}\r\n\r\nexport function AppProvider({ children }: { children: React.ReactNode }) {\r\n const router = useRouter()\r\n const [projects, setProjects] = useState<Project[]>([])\r\n const [activeProject, setActiveProject] = useState<string>(\"\")\r\n const [summary, setSummary] = useState<Summary | null>(null)\r\n const [board, setBoard] = useState<TaskBoard | null>(null)\r\n const [activity, setActivity] = useState<ActivityEvent[]>([])\r\n const [loading, setLoading] = useState(true)\r\n const [liveIndicator, setLiveIndicator] = useState(false)\r\n const [selectedDoc, setSelectedDoc] = useState<SelectedDoc | null>(null)\r\n const [editorSettings, setEditorSettings] = useState<AppSettings[\"editor\"]>(DEFAULT_SETTINGS.editor)\r\n const [autoRefreshSeconds, setAutoRefreshSeconds] = useState(0)\r\n const sseRef = useRef<EventSource | null>(null)\r\n\r\n const rootParam = activeProject ? `?root=${encodeURIComponent(activeProject)}` : \"\"\r\n\r\n const refresh = useCallback(async (root?: string) => {\r\n const r = root || activeProject\r\n if (!r) return\r\n const rp = `?root=${encodeURIComponent(r)}`\r\n try {\r\n const [sumRes, boardRes, actRes] = await Promise.all([\r\n fetch(`/api/summary${rp}`).then((r) => r.json()),\r\n fetch(`/api/tasks${rp}`).then((r) => r.json()),\r\n fetch(`/api/activity${rp}&limit=30`).then((r) => r.json()),\r\n ])\r\n setSummary(sumRes)\r\n const rawBoard = boardRes?.board\r\n setBoard(rawBoard && typeof rawBoard === 'object' ? {\r\n todo: rawBoard.todo ?? [],\r\n 'in-progress': rawBoard['in-progress'] ?? [],\r\n blocked: rawBoard.blocked ?? [],\r\n done: rawBoard.done ?? [],\r\n cancelled: rawBoard.cancelled ?? [],\r\n } : null)\r\n setActivity(Array.isArray(actRes) ? actRes : [])\r\n } catch {}\r\n setLoading(false)\r\n }, [activeProject])\r\n\r\n // Load projects on mount\r\n useEffect(() => {\r\n fetch(\"/api/projects\")\r\n .then((r) => r.json())\r\n .then((p: Project[]) => {\r\n setProjects(p)\r\n if (p.length > 0) {\r\n setActiveProject(p[0].root)\r\n refresh(p[0].root)\r\n } else {\r\n setLoading(false)\r\n }\r\n })\r\n .catch(() => setLoading(false))\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n // SSE for real-time updates\r\n useEffect(() => {\r\n if (!activeProject) return\r\n const es = new EventSource(\"/api/events\")\r\n sseRef.current = es\r\n\r\n es.onmessage = (e) => {\r\n try {\r\n const msg = JSON.parse(e.data)\r\n if (msg.type === \"connected\") return\r\n window.dispatchEvent(new CustomEvent(\"vibedoc:sse\", { detail: msg }))\r\n // Saving a chat is this tab's own bookkeeping, not a project change: don't flash \"live update\"\r\n if (msg.type === \"chat_saved\") return\r\n setLiveIndicator(true)\r\n setTimeout(() => setLiveIndicator(false), 2000)\r\n if ([\"task_updated\", \"task_created\", \"decision_logged\", \"memory_updated\", \"session_start\"].includes(msg.type)) {\r\n refresh()\r\n }\r\n } catch {}\r\n }\r\n\r\n return () => { es.close() }\r\n }, [activeProject, refresh])\r\n\r\n const moveTask = useCallback(async (taskId: string, status: string) => {\r\n // Optimistic update: move card in UI immediately, animated via View Transitions when supported\r\n const apply = () => setBoard(prev => {\r\n if (!prev) return prev\r\n let movedTask: Task | undefined\r\n const next = structuredClone(prev) as TaskBoard\r\n for (const col of Object.keys(next) as (keyof TaskBoard)[]) {\r\n const idx = next[col].findIndex(t => t.id === taskId)\r\n if (idx !== -1) {\r\n movedTask = { ...next[col][idx], status: status as Task[\"status\"] }\r\n next[col] = next[col].filter(t => t.id !== taskId)\r\n }\r\n }\r\n const target = status as keyof TaskBoard\r\n // Insert in server order (core.listTasks sorts by file path) so refresh() doesn't reshuffle\r\n if (movedTask && next[target]) {\r\n next[target] = [...next[target], movedTask].sort((a, b) => (a.file < b.file ? -1 : a.file > b.file ? 1 : 0))\r\n }\r\n return next\r\n })\r\n if (typeof document !== \"undefined\" && \"startViewTransition\" in document) {\r\n document.startViewTransition(() => flushSync(apply))\r\n } else {\r\n apply()\r\n }\r\n\r\n try {\r\n await fetch(`/api/tasks${rootParam}`, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({ taskId, status, actor: \"human\" }),\r\n })\r\n refresh()\r\n } catch {\r\n refresh() // revert by fetching real state on error\r\n }\r\n }, [rootParam, refresh])\r\n\r\n const openDoc = useCallback(async (docPath: string) => {\r\n const res = await fetch(`/api/docs${rootParam}&read=${encodeURIComponent(docPath)}`)\r\n const data = await res.json()\r\n setSelectedDoc(data)\r\n router.push(\"/docs\")\r\n }, [rootParam, router])\r\n\r\n function onProjectChange(root: string) {\r\n setActiveProject(root)\r\n refresh(root)\r\n }\r\n\r\n return (\r\n <AppContext.Provider value={{\r\n projects,\r\n activeProject,\r\n summary,\r\n board,\r\n activity,\r\n liveIndicator,\r\n loading,\r\n selectedDoc,\r\n setSelectedDoc,\r\n rootParam,\r\n onProjectChange,\r\n refresh,\r\n moveTask,\r\n openDoc,\r\n editorSettings,\r\n setEditorSettings,\r\n autoRefreshSeconds,\r\n setAutoRefreshSeconds,\r\n }}>\r\n {children}\r\n </AppContext.Provider>\r\n )\r\n}\r\n","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nexport const concatArrays = <T, U>(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n","import { type ClassValue, clsx } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map<string, ClassPartObject> = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\n const classParts = className.split(CLASS_PART_SEPARATOR)\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record<AnyClassGroupIds, ClassGroup<AnyThemeGroupIds>>,\n theme: ThemeObject<AnyThemeGroupIds>,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup<AnyThemeGroupIds>[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n","export interface AppSettings {\n theme: 'dark' | 'light' | 'system'\n accentColor: 'blue' | 'purple' | 'green' | 'orange'\n fontSize: 'small' | 'medium' | 'large'\n fontSans: FontSans\n fontMono: FontMono\n editor: {\n autoSave: number // 0 = off, otherwise seconds\n wordWrap: boolean\n lineNumbers: boolean\n previewMode: 'split' | 'tab' | 'preview'\n }\n project: {\n autoRefresh: number // 0 = off, otherwise seconds\n showHidden: boolean\n }\n mcp: {\n endpoint: string\n }\n}\n\nexport interface Skill {\n id: string\n name: string\n description: string\n trigger: string\n prompt: string\n tools: string[]\n icon?: string\n}\n\nexport interface Agent {\n id: string\n name: string\n icon: string\n description: string\n skills: string[]\n prompt: string\n active: boolean\n}\n\nexport const SANS_FONTS = [\n { id: 'geist', label: 'Geist', note: 'Made for developer tools. Clean and neutral.' },\n { id: 'inter', label: 'Inter', note: 'The standard UI font. Very clear at small sizes.' },\n { id: 'ibm-plex-sans', label: 'IBM Plex Sans', note: 'Warm and humanist. Good for long reading.' },\n { id: 'atkinson', label: 'Atkinson Hyperlegible', note: 'Letters are easy to tell apart. Best for legibility.' },\n { id: 'dm-sans', label: 'DM Sans', note: 'Geometric. The previous default.' },\n { id: 'system', label: 'System', note: 'Your OS font. Nothing to download.' },\n] as const\n\nexport const MONO_FONTS = [\n { id: 'geist-mono', label: 'Geist Mono', note: 'Pairs with Geist.' },\n { id: 'jetbrains-mono', label: 'JetBrains Mono', note: 'Tall letters, made for code.' },\n { id: 'ibm-plex-mono', label: 'IBM Plex Mono', note: 'Pairs with IBM Plex Sans.' },\n { id: 'dm-mono', label: 'DM Mono', note: 'The previous default.' },\n { id: 'system', label: 'System', note: 'Your OS monospace font.' },\n] as const\n\nexport type FontSans = (typeof SANS_FONTS)[number]['id']\nexport type FontMono = (typeof MONO_FONTS)[number]['id']\n\nexport const DEFAULT_SETTINGS: AppSettings = {\n theme: 'dark',\n accentColor: 'blue',\n fontSize: 'medium',\n fontSans: 'geist',\n fontMono: 'geist-mono',\n editor: {\n autoSave: 10,\n wordWrap: true,\n lineNumbers: true,\n previewMode: 'split',\n },\n project: {\n autoRefresh: 10,\n showHidden: false,\n },\n mcp: {\n endpoint: '',\n },\n}\n\n// Older builds saved this hardcoded default into .vibedoc/settings.json; treat it like \"unset\".\nconst LEGACY_MCP_ENDPOINT = 'http://localhost:3000/api/mcp'\n\n/** The saved endpoint, or this server's own /api/mcp when none was set. */\nexport function resolveMcpEndpoint(saved: string, origin: string): string {\n return !saved || saved === LEGACY_MCP_ENDPOINT ? `${origin}/api/mcp` : saved\n}\n\nexport const DEFAULT_SKILLS: Skill[] = [\n {\n id: 'code-review',\n name: 'Code Review',\n description: 'Analyzes code for quality, security, and performance issues',\n trigger: '/review',\n prompt: 'You are an expert code reviewer. Analyze the provided code for:\\n- Code quality and best practices\\n- Security vulnerabilities\\n- Performance issues\\n- Maintainability concerns\\n\\nProvide actionable feedback.',\n tools: ['vibedoc_read_doc', 'vibedoc_search_docs'],\n icon: '🔧',\n },\n {\n id: 'doc-generator',\n name: 'Documentation Generator',\n description: 'Creates documentation from code and comments',\n trigger: '/docs',\n prompt: 'You are a technical documentation writer. Generate clear, comprehensive documentation for the provided code or feature.',\n tools: ['vibedoc_read_doc', 'vibedoc_write_doc'],\n icon: '📝',\n },\n {\n id: 'test-writer',\n name: 'Test Writer',\n description: 'Generates unit tests for functions and components',\n trigger: '/test',\n prompt: 'You are a testing expert. Write comprehensive unit tests for the provided code, covering edge cases and ensuring good test coverage.',\n tools: ['vibedoc_read_doc', 'vibedoc_search_docs'],\n icon: '🧪',\n },\n]\n\nexport const DEFAULT_AGENTS: Agent[] = [\n {\n id: 'code-assistant',\n name: 'Code Assistant',\n icon: '🤖',\n description: 'General-purpose coding help',\n skills: ['code-review', 'test-writer'],\n prompt: 'You are a helpful coding assistant. Help the user with their coding tasks.',\n active: true,\n },\n {\n id: 'doc-bot',\n name: 'Documentation Bot',\n icon: '📚',\n description: 'Focused on docs and comments',\n skills: ['doc-generator'],\n prompt: 'You are a documentation specialist. Focus on creating and improving documentation.',\n active: true,\n },\n]\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key extends string, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = <Key extends string, Value>(\n maxCacheSize: number,\n): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record<Key, Value> = Object.create(null)\n let previousCache: Record<Key, Value> = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = (className: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n","import { AnyConfig } from './types'\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map<string, number>()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyClassGroupIds, AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),\n ...createClassGroupUtils(config),\n})\n\nconst createPostfixLookupClassGroupIds = (config: AnyConfig) => {\n const lookup: Partial<Record<AnyClassGroupIds, true>> = Object.create(null)\n const classGroupIds = config.postfixLookupClassGroups\n\n if (classGroupIds) {\n for (let i = 0; i < classGroupIds.length; i++) {\n lookup[classGroupIds[i]!] = true\n }\n }\n\n return lookup\n}\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers,\n postfixLookupClassGroupIds,\n } = configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId: ReturnType<typeof getClassGroupId>\n\n if (hasPostfixModifier) {\n const baseClassNameWithoutPostfix = baseClassName.substring(\n 0,\n maybePostfixModifierPosition,\n )\n classGroupId = getClassGroupId(baseClassNameWithoutPostfix)\n\n const classGroupIdWithPostfix =\n classGroupId && postfixLookupClassGroupIds[classGroupId]\n ? getClassGroupId(baseClassName)\n : undefined\n if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {\n classGroupId = classGroupIdWithPostfix\n hasPostfixModifier = false\n }\n } else {\n classGroupId = getClassGroupId(baseClassName)\n }\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier)\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i]!\n classGroupsInConflict.push(modifierId + group)\n }\n\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = readonly ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n themeGetter.themeKey = key\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\\(.+\\)$/\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\n // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n // For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isNamedContainerQuery = (value: string) =>\n value.startsWith('@container') &&\n ((value[10] === '/' && value[11] !== undefined) ||\n (value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10)) ||\n (value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10)))\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryWeight = (value: string) => getIsArbitraryValue(value, isLabelWeight, isAny)\n\nexport const isArbitraryFamilyName = (value: string) =>\n getIsArbitraryValue(value, isLabelFamilyName, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\nexport const isArbitraryVariableWeight = (value: string) =>\n getIsArbitraryVariable(value, isLabelWeight, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelWeight = (label: string) => label === 'number' || label === 'weight'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNamedContainerQuery,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n\n const themeColor = fromTheme('color')\n const themeFont = fromTheme('font')\n const themeText = fromTheme('text')\n const themeFontWeight = fromTheme('font-weight')\n const themeTracking = fromTheme('tracking')\n const themeLeading = fromTheme('leading')\n const themeBreakpoint = fromTheme('breakpoint')\n const themeContainer = fromTheme('container')\n const themeSpacing = fromTheme('spacing')\n const themeRadius = fromTheme('radius')\n const themeShadow = fromTheme('shadow')\n const themeInsetShadow = fromTheme('inset-shadow')\n const themeTextShadow = fromTheme('text-shadow')\n const themeDropShadow = fromTheme('drop-shadow')\n const themeBlur = fromTheme('blur')\n const themePerspective = fromTheme('perspective')\n const themeAspect = fromTheme('aspect')\n const themeEase = fromTheme('ease')\n const themeAnimate = fromTheme('animate')\n\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingInline = () =>\n [\n themeContainer,\n isFraction,\n 'screen',\n 'full',\n 'dvw',\n 'lvw',\n 'svw',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleSizingBlock = () =>\n [\n isFraction,\n 'screen',\n 'full',\n 'lh',\n 'dvh',\n 'lvh',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\n ],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Container Type\n * @see https://tailwindcss.com/docs/responsive-design#container-queries\n */\n 'container-type': [\n { '@container': ['', 'normal', 'size', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Container Name\n * @see https://tailwindcss.com/docs/responsive-design#named-containers\n */\n 'container-named': [isNamedContainerQuery],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [\n {\n columns: [\n isNumber,\n 'auto',\n isArbitraryValue,\n isArbitraryVariable,\n themeContainer,\n ],\n },\n ],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: scaleInset() }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [\n {\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset(),\n },\n ],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [\n {\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset(),\n },\n ],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{ 'inset-bs': scaleInset() }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{ 'inset-be': scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{ pbs: scaleUnambiguousSpacing() }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{ pbe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{ mbs: scaleMargin() }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{ mbe: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{ 'space-y': scaleUnambiguousSpacing() }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n\n // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/inline-size\n */\n 'inline-size': [{ inline: ['auto', ...scaleSizingInline()] }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-inline-size\n */\n 'min-inline-size': [{ 'min-inline': ['auto', ...scaleSizingInline()] }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-inline-size\n */\n 'max-inline-size': [{ 'max-inline': ['none', ...scaleSizingInline()] }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/block-size\n */\n 'block-size': [{ block: ['auto', ...scaleSizingBlock()] }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-block-size\n */\n 'min-block-size': [{ 'min-block': ['auto', ...scaleSizingBlock()] }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-block-size\n */\n 'max-block-size': [{ 'max-block': ['none', ...scaleSizingBlock()] }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\n\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [\n { text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight],\n },\n ],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [\n { font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont] },\n ],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{ 'font-features': [isArbitraryValue] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [\n { 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber] },\n ],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [\n { list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [\n { 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Tab Size\n * @see https://tailwindcss.com/docs/tab-size\n */\n 'tab-size': [{ tab: [isInteger, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: ['', isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{ 'border-bs': scaleBorderWidth() }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{ 'border-be': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{ 'divide-y': scaleBorderWidth() }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{ 'border-bs': scaleColor() }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{ 'border-be': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [\n { 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [\n { outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength] },\n ],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n // Deprecated since Tailwind CSS v4.0.0\n 'inner',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{ ring: scaleColor() }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [\n { 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [\n { 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [\n { 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [\n { 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [\n { 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [\n { 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [\n { 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [\n { 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue] },\n ],\n\n // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [\n { ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [\n { perspective: [themePerspective, isArbitraryVariable, isArbitraryValue] },\n ],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [\n { transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu'] },\n ],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n /**\n * Zoom\n * @see https://tailwindcss.com/docs/zoom\n */\n zoom: [{ zoom: [isInteger, isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [\n { scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light'] },\n ],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scrollbar Thumb Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-thumb-color': [{ 'scrollbar-thumb': scaleColor() }],\n /**\n * Scrollbar Track Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-track-color': [{ 'scrollbar-track': scaleColor() }],\n /**\n * Scrollbar Gutter\n * @see https://tailwindcss.com/docs/scrollbar-gutter\n */\n 'scrollbar-gutter': [{ 'scrollbar-gutter': ['auto', 'stable', 'both'] }],\n /**\n * Scrollbar Width\n * @see https://tailwindcss.com/docs/scrollbar-width\n */\n 'scrollbar-w': [{ scrollbar: ['auto', 'thin', 'none'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{ 'scroll-mbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{ 'scroll-mbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{ 'scroll-pbs': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{ 'scroll-pbe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\n },\n conflictingClassGroups: {\n 'container-named': ['container-type'],\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: [\n 'inset-x',\n 'inset-y',\n 'inset-bs',\n 'inset-be',\n 'start',\n 'end',\n 'top',\n 'right',\n 'bottom',\n 'left',\n ],\n 'inset-x': ['start', 'end', 'right', 'left'],\n 'inset-y': ['inset-bs', 'inset-be', 'top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['ps', 'pe', 'pr', 'pl'],\n py: ['pbs', 'pbe', 'pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['ms', 'me', 'mr', 'ml'],\n my: ['mbs', 'mbe', 'mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-bs',\n 'border-w-be',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-s', 'border-w-e', 'border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-bs', 'border-w-be', 'border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-bs',\n 'border-color-be',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-s', 'border-color-e', 'border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-bs', 'border-color-be', 'border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mbs',\n 'scroll-mbe',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-ms', 'scroll-me', 'scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pbs',\n 'scroll-pbe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-ps', 'scroll-pe', 'scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n postfixLookupClassGroups: ['container-type'],\n orderSensitiveModifiers: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'postfixLookupClassGroups', override.postfixLookupClassGroups)\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'postfixLookupClassGroups')\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n"],"names":["_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interop_require_wildcard","obj","__esModule","default","cache","has","get","newObj","__proto__","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","exports","_","DynamicServerError","isDynamicServerError","DYNAMIC_ERROR_CODE","Error","constructor","description","digest","err","StaticGenBailoutError","isStaticGenBailoutError","NEXT_STATIC_GEN_BAILOUT","code","error","actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage","getRedirectError","getRedirectStatusCodeFromError","getRedirectTypeFromError","getURLFromRedirectError","permanentRedirect","redirect","url","type","statusCode","RedirectStatusCode","TemporaryRedirect","REDIRECT_ERROR_CODE","getStore","isAction","PermanentRedirect","isRedirectError","split","slice","join","Number","at","HTTPAccessErrorStatus","HTTP_ERROR_FALLBACK_ERROR_CODE","getAccessFallbackErrorTypeByStatus","getAccessFallbackHTTPStatus","isHTTPAccessFallbackError","NOT_FOUND","FORBIDDEN","UNAUTHORIZED","ALLOWED_CODES","Set","values","prefix","httpStatus","status","notFound","DIGEST","forbidden","process","env","__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS","unauthorized","isPostpone","REACT_POSTPONE_TYPE","Symbol","for","$$typeof","isNextRouterError","unstable_rethrow","isBailoutToCSRError","isDynamicPostpone","isHangingPromiseRejectionError","isPrerenderInterruptedError","cause","ReadonlyURLSearchParams","RedirectType","unstable_isUnrecognizedActionError","push","replace","ServerInsertedHTMLContext","useParams","usePathname","useRouter","useSearchParams","useSelectedLayoutSegment","useSelectedLayoutSegments","useServerInsertedHTML","instrumentParamsForClientValidation","instrumentSearchParamsForClientValidation","expectCompleteParamsInClientValidation","__NEXT_CACHE_COMPONENTS","require","useDynamicSearchParams","searchParams","useContext","SearchParamsContext","readonlySearchParams","useMemo","window","NODE_ENV","React","navigationPromises","use","NavigationPromisesContext","useDynamicRouteParams","pathname","PathnameContext","router","AppRouterContext","layout","LayoutRouterContext","bfcacheIdNumber","parentCacheNode","bfcacheId","back","forward","refresh","hmrRefresh","prefetch","experimental_gesturePush","params","PathParamsContext","parallelRouteKey","context","promise","selectedLayoutSegmentsPromises","getSelectedLayoutSegmentPath","parentTree","selectedLayoutSegments","selectedLayoutSegmentPromises","computeSelectedLayoutSegment","module","UnrecognizedActionError","args","name","ReadonlyURLSearchParamsError","URLSearchParams","append","delete","sort","errorCode","destination","isNaN","createDynamicBodyError","createDynamicBodyErrorInNavigation","createDynamicMetadataError","createDynamicOrRuntimeBodyError","createDynamicOrRuntimeMetadataError","createDynamicOrRuntimeViewportError","createDynamicViewportError","createLinkBodyErrorInNavigation","createLinkMetadataError","createLinkViewportError","createRuntimeBodyError","createRuntimeBodyErrorInNavigation","createRuntimeMetadataError","createRuntimeViewportError","logBuildDebugHint","route","console","__NEXT_DEV_SERVER","INSTANT_SLOT_MARKER_PREFIX","INSTANT_SLOT_MARKER_SUFFIX","INSTANT_VALIDATION_BOUNDARY_NAME","allRequiredBoundariesRendered","createValidationBoundaryTracking","requiredIds","Map","renderedIds","state","id","keys","DynamicHoleKind","Postpone","PreludeState","abortAndThrowOnSynchronousRequestDataAccess","abortOnSynchronousPlatformIOAccess","accessedDynamicData","annotateDynamicAccess","consumeDynamicAccess","createDynamicTrackingState","createDynamicValidationState","createHangingInputAbortSignal","createInstantValidationState","createRenderInBrowserAbortSignal","formatDynamicAPIAccesses","getFirstDynamicReason","getNavigationDisallowedDynamicReasons","getStaticShellDisallowedDynamicReasons","logDisallowedDynamicError","markCurrentScopeAsDynamic","postponeWithTracking","throwIfDisallowedDynamic","throwIfSyncIOUsed","throwToInterruptStaticGeneration","trackAllowedDynamicAccess","trackDynamicDataInDynamicRender","trackDynamicHoleInNavigation","trackDynamicHoleInRuntimeShell","trackDynamicHoleInStaticShell","trackThrownErrorInNavigation","hasPostpone","unstable_postpone","isDebugDynamicAccesses","dynamicAccesses","syncDynamicErrorWithStack","syncDynamicErrorWithStackPostMicrotask","hasSuspenseAboveBody","hasDynamicMetadata","dynamicMetadata","hasDynamicViewport","hasAllowedDynamic","dynamicErrors","getPendingClientSyncDynamicError","clientDynamic","trackingState","expression","store","workUnitStore","forceDynamic","forceStatic","dynamicShouldError","dynamicTracking","revalidate","dynamicUsageDescription","dynamicUsageStack","stack","usedDynamic","prerenderStore","abortOnSynchronousDynamicDataAccess","reason","createPrerenderInterruptedError","controller","abort","undefined","errorWithStack","queueMicrotask","trackRuntimeDataAccessed","prerenderSignal","signal","aborted","assertPostpone","createPostponeReason","message","isDynamicPostponeReason","includes","NEXT_PRERENDER_INTERRUPTED","length","serverDynamic","filter","access","map","line","AbortController","BailoutToCSRError","cacheSignal","inputReady","then","stagedRendering","getStagedRenderingController","finalStage","waitForStage","scheduleOnNextTick","noop","workStore","fallbackParams","fallbackRouteParams","size","makeClientHookHangingPromise","renderSignal","ClientHookDynamicError","InvariantError","throwForMissingRequestStore","hasSuspenseRegex","bodyAndImplicitTags","hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex","RegExp","ROOT_LAYOUT_BOUNDARY_NAME","hasMetadataRegex","METADATA_BOUNDARY_NAME","hasViewportRegex","VIEWPORT_BOUNDARY_NAME","hasOutletRegex","OUTLET_BOUNDARY_NAME","hasInstantValidationBoundaryRegex","slotMarkerRegex","resolveInstantStack","componentStack","dynamicValidation","slotStacks","match","exec","slotIndex","parseInt","slotStack","trackOutletSuspenseAboveBody","test","dynamicReason","syncDynamicError","isClientHookDynamicError","addErrorContext","hasAllowedClientDynamicAboveBoundary","validationPreventingErrors","thrownErrorsOutsideBoundary","kind","boundaryState","effectiveCreateInstantStack","boundaryLocation","suspenseLocation","index","thrownValue","createInstantStack","ownerStack","captureOwnerStack","prelude","allowEmptyStaticShell","i","validationSampleTracking","devRenderDidError","missingSampleErrors","rootInstantStack","missingFiles","filePaths","filePath","normalized","cwd","createUnrenderedSegmentError","AggregateError","RENDER_STAGE_ADVANCE_ORDER","RenderStage","StagedRenderingController","SyncIOMode","getNextStage","isAdvanceableRenderStage","stage","indexOf","abortSignal","abandonController","syncIO","currentStage","syncInterruptReason","triggers","createStageTrigger","syncIOMode","addEventListener","trigger","cancelStageTrigger","once","abandonRender","onStage","callback","addSyncTriggerListener","shouldTrackSyncInterrupt","syncInterruptCurrentStageWithReason","advanceStage","getSyncInterruptReason","getStageEndTime","triggeredAt","Infinity","nextStageIx","dynamicStageIx","resolveStage","targetStage","targetStageIx","fireStageTrigger","getStagePromise","delayUntilStage","displayName","resolvedValue","stagePromise","makeDevtoolsIOPromiseFromIOTrigger","catch","ignoreReject","ioTrigger","Promise","resolve","reject","bind","listener","_listeners","createPromiseWithResolvers","_resolvePromise","_rejectPromise","performance","now","timeOrigin","listeners","RENDER_STAGES_BY_DATA_KIND","applyOwnerStack","makeDevtoolsIOAwarePromise","makeDynamicHangingPromise","makeFallbackParamsHangingPromise","makePromiseFromTrigger","makeRuntimeHangingPromise","makeStageHangingPromise","makeUntrackedHangingPromise","trackFallbackParamsAccessed","HANGING_PROMISE_REJECTION","HangingPromiseRejectionError","CLIENT_HOOK_DYNAMIC","abortListenersBySignal","makeHangingPromiseWithError","trackRuntimeDataAccessedImpl","isFallbackParamAccess","runtimeDataAccessed","hintCell","shouldAttemptStaticPrefetch","isFallbackUpgradeable","current","hangingPromise","boundRejection","currentListeners","value","underlying","requestStore","setTimeout","sessionData","ShellRuntime","staticLinkData","Static","runtimeLinkData","Runtime","getClientReact","getServerReact","innerOwnerStack","outerOwnerStack","frames","frame","atLeastOneTask","scheduleImmediate","waitAtLeastOneReactRenderTask","cb","NEXT_RUNTIME","nextTick","setImmediate","r","createLinkPrefetchPartialError","label","p","options","endsWith","BAILOUT_TO_CSR","res","rej","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","getSegmentValue","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","startsWith","isPageSegment","stringifiedQuery","JSON","stringify","segments","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","segmentValue","note","SANS_FONTS","editor","MONO_FONTS","showHidden","DEFAULT_SETTINGS","theme","accentColor","fontSize","fontSans","fontMono","autoSave","wordWrap","lineNumbers","previewMode","project","autoRefresh","mcp","endpoint","LEGACY_MCP_ENDPOINT","prompt","resolveMcpEndpoint","saved","origin","DEFAULT_SKILLS","tools","icon","DEFAULT_AGENTS","skills","active"],"mappings":"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","ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,35,37,39,40,41,42,43,44,45,46,47,48,49,50,51]}