@farm.js/core 0.1.0-beta.21 → 0.1.0-beta.23

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 (266) hide show
  1. package/dist/after.d.mts +25 -0
  2. package/dist/after.d.ts +25 -0
  3. package/dist/agent-runtime.d.mts +97 -0
  4. package/dist/agent-runtime.d.ts +97 -0
  5. package/dist/api/route-manager.d.mts +68 -0
  6. package/dist/api/route-manager.d.ts +68 -0
  7. package/dist/api/runtime.d.mts +3 -0
  8. package/dist/api/runtime.d.ts +3 -0
  9. package/dist/api.cjs +22 -19
  10. package/dist/api.cjs.map +1 -1
  11. package/dist/api.d.mts +50 -0
  12. package/dist/api.d.ts +50 -0
  13. package/dist/api.mjs +2 -1
  14. package/dist/app-CTFnOJaI.d.ts +308 -0
  15. package/dist/app-DA6ospIq.d.mts +308 -0
  16. package/dist/app-markdown.d.mts +25 -0
  17. package/dist/app-markdown.d.ts +25 -0
  18. package/dist/cache.d.mts +192 -0
  19. package/dist/cache.d.ts +192 -0
  20. package/dist/{chunk-MIUW47JX.mjs → chunk-2PEJGY5V.mjs} +15 -20
  21. package/dist/chunk-2PEJGY5V.mjs.map +1 -0
  22. package/dist/{chunk-RIXKJPGI.mjs → chunk-42325TLU.mjs} +2 -2
  23. package/dist/chunk-4IVNW5QD.mjs +82 -0
  24. package/dist/chunk-4IVNW5QD.mjs.map +1 -0
  25. package/dist/{chunk-I3UWA2P2.mjs → chunk-5NOVWCFL.mjs} +2 -2
  26. package/dist/chunk-5NOVWCFL.mjs.map +1 -0
  27. package/dist/chunk-D42BNPZH.mjs +79 -0
  28. package/dist/chunk-D42BNPZH.mjs.map +1 -0
  29. package/dist/{chunk-LLPN5SEZ.mjs → chunk-DVPRBMU2.mjs} +2 -2
  30. package/dist/{chunk-VIC7NJ77.mjs → chunk-FJGTYLCO.mjs} +67 -20
  31. package/dist/chunk-FJGTYLCO.mjs.map +1 -0
  32. package/dist/chunk-GIELMNBG.mjs +15 -0
  33. package/dist/chunk-GIELMNBG.mjs.map +1 -0
  34. package/dist/chunk-GQVQESLY.mjs +25 -0
  35. package/dist/chunk-GQVQESLY.mjs.map +1 -0
  36. package/dist/chunk-H53KVQUU.mjs +48 -0
  37. package/dist/chunk-H53KVQUU.mjs.map +1 -0
  38. package/dist/chunk-HCGQYYHI.mjs +1 -0
  39. package/dist/chunk-HCGQYYHI.mjs.map +1 -0
  40. package/dist/{chunk-4EATUJFO.mjs → chunk-ICTGDDV4.mjs} +20 -22
  41. package/dist/chunk-ICTGDDV4.mjs.map +1 -0
  42. package/dist/{chunk-UCYWGN2P.mjs → chunk-OHNSROHS.mjs} +1 -1
  43. package/dist/{chunk-FRPWCMMG.mjs → chunk-SBWOTAX4.mjs} +63 -2
  44. package/dist/chunk-SBWOTAX4.mjs.map +1 -0
  45. package/dist/{chunk-FKKM7HVF.mjs → chunk-TX54PXAJ.mjs} +109 -58
  46. package/dist/chunk-TX54PXAJ.mjs.map +1 -0
  47. package/dist/{chunk-CEVMYGDL.mjs → chunk-YD5IRKVS.mjs} +13 -9
  48. package/dist/chunk-YD5IRKVS.mjs.map +1 -0
  49. package/dist/chunk-recovery-lnQFzcQP.d.mts +26 -0
  50. package/dist/chunk-recovery-lnQFzcQP.d.ts +26 -0
  51. package/dist/client-BT1mFQas.d.mts +447 -0
  52. package/dist/client-Nn0q4eO4.d.ts +447 -0
  53. package/dist/client-cache-CIlyBlmx.d.ts +6 -0
  54. package/dist/client-cache-D-EZ7XVW.d.mts +6 -0
  55. package/dist/client-plugins-CCilIb_G.d.mts +2092 -0
  56. package/dist/client-plugins-DuuleQKk.d.ts +2092 -0
  57. package/dist/client-plugins.d.mts +25 -0
  58. package/dist/client-plugins.d.ts +25 -0
  59. package/dist/client.cjs +122 -35
  60. package/dist/client.cjs.map +1 -1
  61. package/dist/client.d.mts +454 -0
  62. package/dist/client.d.ts +454 -0
  63. package/dist/client.mjs +13 -2
  64. package/dist/config.d.mts +32 -0
  65. package/dist/config.d.ts +32 -0
  66. package/dist/cron.d.mts +78 -0
  67. package/dist/cron.d.ts +78 -0
  68. package/dist/deferred.d.mts +42 -0
  69. package/dist/deferred.d.ts +42 -0
  70. package/dist/deployment.d.mts +36 -0
  71. package/dist/deployment.d.ts +36 -0
  72. package/dist/{devtools-52FYXIEK.mjs → devtools-326RBQCN.mjs} +7 -6
  73. package/dist/{devtools-52FYXIEK.mjs.map → devtools-326RBQCN.mjs.map} +1 -1
  74. package/dist/docs.cjs.map +1 -1
  75. package/dist/docs.d.mts +80 -0
  76. package/dist/docs.d.ts +80 -0
  77. package/dist/docs.mjs +6 -5
  78. package/dist/env-types.d.mts +12 -0
  79. package/dist/env-types.d.ts +12 -0
  80. package/dist/env.d.mts +45 -0
  81. package/dist/env.d.ts +45 -0
  82. package/dist/environment/vite.d.mts +22 -0
  83. package/dist/environment/vite.d.ts +22 -0
  84. package/dist/environment.d.mts +18 -0
  85. package/dist/environment.d.ts +18 -0
  86. package/dist/font.d.mts +95 -0
  87. package/dist/font.d.ts +95 -0
  88. package/dist/headers.d.mts +22 -0
  89. package/dist/headers.d.ts +22 -0
  90. package/dist/i18n/client.d.mts +32 -0
  91. package/dist/i18n/client.d.ts +32 -0
  92. package/dist/i18n/index.d.mts +20 -0
  93. package/dist/i18n/index.d.ts +20 -0
  94. package/dist/i18n/server.d.mts +30 -0
  95. package/dist/i18n/server.d.ts +30 -0
  96. package/dist/image/server.d.mts +37 -0
  97. package/dist/image/server.d.ts +37 -0
  98. package/dist/image/sharp.d.mts +7 -0
  99. package/dist/image/sharp.d.ts +7 -0
  100. package/dist/image-config-Duob7wER.d.mts +50 -0
  101. package/dist/image-config-Duob7wER.d.ts +50 -0
  102. package/dist/image.d.mts +39 -0
  103. package/dist/image.d.ts +39 -0
  104. package/dist/index.cjs +496 -123
  105. package/dist/index.cjs.map +1 -1
  106. package/dist/index.d.mts +480 -0
  107. package/dist/index.d.ts +480 -0
  108. package/dist/index.mjs +70 -52
  109. package/dist/index.mjs.map +1 -1
  110. package/dist/integration-api-CHT2OKAf.d.mts +93 -0
  111. package/dist/integration-api-CHT2OKAf.d.ts +93 -0
  112. package/dist/integrations.d.mts +25 -0
  113. package/dist/integrations.d.ts +25 -0
  114. package/dist/internal/build-runtime.cjs +386 -83
  115. package/dist/internal/build-runtime.cjs.map +1 -1
  116. package/dist/internal/build-runtime.d.mts +42 -0
  117. package/dist/internal/build-runtime.d.ts +42 -0
  118. package/dist/internal/build-runtime.mjs +17 -13
  119. package/dist/internal/client-runtime.d.mts +17 -0
  120. package/dist/internal/client-runtime.d.ts +17 -0
  121. package/dist/internal/config-runtime.cjs +41 -0
  122. package/dist/internal/config-runtime.cjs.map +1 -1
  123. package/dist/internal/config-runtime.d.mts +42 -0
  124. package/dist/internal/config-runtime.d.ts +42 -0
  125. package/dist/internal/config-runtime.mjs +5 -4
  126. package/dist/internal/metadata-image-runtime.d.mts +25 -0
  127. package/dist/internal/metadata-image-runtime.d.ts +25 -0
  128. package/dist/internal/production-node-env.d.mts +12 -0
  129. package/dist/internal/production-node-env.d.ts +12 -0
  130. package/dist/internal/production-runtime.cjs +178 -0
  131. package/dist/internal/production-runtime.cjs.map +1 -1
  132. package/dist/internal/production-runtime.d.mts +80 -0
  133. package/dist/internal/production-runtime.d.ts +80 -0
  134. package/dist/internal/production-runtime.mjs +13 -1
  135. package/dist/internal/production-runtime.mjs.map +1 -1
  136. package/dist/island-CfGru1MO.d.mts +9 -0
  137. package/dist/island-CfGru1MO.d.ts +9 -0
  138. package/dist/markdown.d.mts +60 -0
  139. package/dist/markdown.d.ts +60 -0
  140. package/dist/metadata-DyPRG0wX.d.ts +22 -0
  141. package/dist/metadata-_GHcAySx.d.mts +22 -0
  142. package/dist/middleware.cjs +17 -17
  143. package/dist/middleware.cjs.map +1 -1
  144. package/dist/middleware.d.mts +172 -0
  145. package/dist/middleware.d.ts +172 -0
  146. package/dist/middleware.mjs +3 -2
  147. package/dist/navigation-errors-Dvwpzaer.d.mts +13 -0
  148. package/dist/navigation-errors-Dvwpzaer.d.ts +13 -0
  149. package/dist/navigation.d.mts +14 -0
  150. package/dist/navigation.d.ts +14 -0
  151. package/dist/observability.d.mts +335 -0
  152. package/dist/observability.d.ts +335 -0
  153. package/dist/params-BALtrRim.d.ts +15 -0
  154. package/dist/params-ry-lxqmy.d.mts +15 -0
  155. package/dist/plugin-BJDf43dc.d.mts +165 -0
  156. package/dist/plugin-BJDf43dc.d.ts +165 -0
  157. package/dist/plugin.cjs +261 -62
  158. package/dist/plugin.cjs.map +1 -1
  159. package/dist/plugin.d.mts +25 -0
  160. package/dist/plugin.d.ts +25 -0
  161. package/dist/plugin.mjs +13 -9
  162. package/dist/production-runtime-C4cO3esK.d.mts +81 -0
  163. package/dist/production-runtime-DrEy8kBO.d.ts +81 -0
  164. package/dist/query/client.d.mts +61 -0
  165. package/dist/query/client.d.ts +61 -0
  166. package/dist/query/index.d.mts +90 -0
  167. package/dist/query/index.d.ts +90 -0
  168. package/dist/query/parsers.d.mts +25 -0
  169. package/dist/query/parsers.d.ts +25 -0
  170. package/dist/query/server.d.mts +55 -0
  171. package/dist/query/server.d.ts +55 -0
  172. package/dist/request-B2PpOxYK.d.mts +6 -0
  173. package/dist/request-D40lt6aN.d.ts +6 -0
  174. package/dist/request.d.mts +26 -0
  175. package/dist/request.d.ts +26 -0
  176. package/dist/resolver-DJqjLMg_.d.mts +14 -0
  177. package/dist/resolver-IH4RmPEl.d.ts +14 -0
  178. package/dist/route-runtime-DoOHzCAD.d.mts +38 -0
  179. package/dist/route-runtime-DoOHzCAD.d.ts +38 -0
  180. package/dist/router.d.mts +36 -0
  181. package/dist/router.d.ts +36 -0
  182. package/dist/routes.d.mts +227 -0
  183. package/dist/routes.d.ts +227 -0
  184. package/dist/runtime-Bpp-c28k.d.ts +231 -0
  185. package/dist/runtime-Cxpq6xZN.d.mts +27 -0
  186. package/dist/runtime-Q3u74Nbq.d.mts +231 -0
  187. package/dist/runtime-bv63eUiO.d.ts +27 -0
  188. package/dist/server-action-security.d.mts +45 -0
  189. package/dist/server-action-security.d.ts +45 -0
  190. package/dist/server-fn-client.d.mts +33 -0
  191. package/dist/server-fn-client.d.ts +33 -0
  192. package/dist/server-fn-error-DDh14a0V.d.mts +26 -0
  193. package/dist/server-fn-error-DDh14a0V.d.ts +26 -0
  194. package/dist/server-fn.d.mts +121 -0
  195. package/dist/server-fn.d.ts +121 -0
  196. package/dist/server-plugins.d.mts +58 -0
  197. package/dist/server-plugins.d.ts +58 -0
  198. package/dist/server-query-client.d.mts +51 -0
  199. package/dist/server-query-client.d.ts +51 -0
  200. package/dist/server-query.d.mts +37 -0
  201. package/dist/server-query.d.ts +37 -0
  202. package/dist/server.cjs +285 -85
  203. package/dist/server.cjs.map +1 -1
  204. package/dist/server.d.mts +53 -0
  205. package/dist/server.d.ts +53 -0
  206. package/dist/server.mjs +26 -31
  207. package/dist/server.mjs.map +1 -1
  208. package/dist/storage.d.mts +52 -0
  209. package/dist/storage.d.ts +52 -0
  210. package/dist/testing.d.mts +104 -0
  211. package/dist/testing.d.ts +104 -0
  212. package/dist/theme/client.cjs +115 -0
  213. package/dist/theme/client.cjs.map +1 -0
  214. package/dist/theme/client.d.mts +17 -0
  215. package/dist/theme/client.d.ts +17 -0
  216. package/dist/theme/client.mjs +16 -0
  217. package/dist/theme/client.mjs.map +1 -0
  218. package/dist/theme/index.cjs +71 -0
  219. package/dist/theme/index.cjs.map +1 -0
  220. package/dist/theme/index.d.mts +6 -0
  221. package/dist/theme/index.d.ts +6 -0
  222. package/dist/theme/index.mjs +9 -0
  223. package/dist/theme/index.mjs.map +1 -0
  224. package/dist/theme/server.cjs +191 -0
  225. package/dist/theme/server.cjs.map +1 -0
  226. package/dist/theme/server.d.mts +8 -0
  227. package/dist/theme/server.d.ts +8 -0
  228. package/dist/theme/server.mjs +18 -0
  229. package/dist/theme/server.mjs.map +1 -0
  230. package/dist/transport-BmbGTXA5.d.mts +49 -0
  231. package/dist/transport-BmbGTXA5.d.ts +49 -0
  232. package/dist/types-BMxWr97v.d.mts +81 -0
  233. package/dist/types-BMxWr97v.d.ts +81 -0
  234. package/dist/types-CsR8fpgF.d.mts +30 -0
  235. package/dist/types-CsR8fpgF.d.ts +30 -0
  236. package/dist/types-D1A6-XvH.d.mts +73 -0
  237. package/dist/types-D1A6-XvH.d.ts +73 -0
  238. package/dist/types-DTzm4TCl.d.mts +78 -0
  239. package/dist/types-DTzm4TCl.d.ts +78 -0
  240. package/dist/utils-3sQgfkya.d.ts +23 -0
  241. package/dist/utils-Bop7bly-.d.mts +23 -0
  242. package/dist/version.cjs +1 -1
  243. package/dist/version.cjs.map +1 -1
  244. package/dist/version.d.mts +3 -0
  245. package/dist/version.d.ts +3 -0
  246. package/dist/version.mjs +1 -1
  247. package/dist/vite.cjs +285 -64
  248. package/dist/vite.cjs.map +1 -1
  249. package/dist/vite.d.mts +25 -0
  250. package/dist/vite.d.ts +25 -0
  251. package/dist/vite.mjs +13 -9
  252. package/dist/workflows-CusFV6mn.d.mts +153 -0
  253. package/dist/workflows-CusFV6mn.d.ts +153 -0
  254. package/dist/workflows.d.mts +1 -0
  255. package/dist/workflows.d.ts +1 -0
  256. package/package.json +25 -1
  257. package/dist/chunk-4EATUJFO.mjs.map +0 -1
  258. package/dist/chunk-CEVMYGDL.mjs.map +0 -1
  259. package/dist/chunk-FKKM7HVF.mjs.map +0 -1
  260. package/dist/chunk-FRPWCMMG.mjs.map +0 -1
  261. package/dist/chunk-I3UWA2P2.mjs.map +0 -1
  262. package/dist/chunk-MIUW47JX.mjs.map +0 -1
  263. package/dist/chunk-VIC7NJ77.mjs.map +0 -1
  264. /package/dist/{chunk-RIXKJPGI.mjs.map → chunk-42325TLU.mjs.map} +0 -0
  265. /package/dist/{chunk-LLPN5SEZ.mjs.map → chunk-DVPRBMU2.mjs.map} +0 -0
  266. /package/dist/{chunk-UCYWGN2P.mjs.map → chunk-OHNSROHS.mjs.map} +0 -0
@@ -1,23 +1,18 @@
1
1
  import {
2
2
  APITypeGenerator
3
3
  } from "./chunk-LGHEOHBU.mjs";
4
- import {
5
- addMetadataImageReference,
6
- mergeMetadata,
7
- renderMetadataHead
8
- } from "./chunk-FRPWCMMG.mjs";
9
4
  import {
10
5
  createFarmMetadataImageResponse
11
6
  } from "./chunk-53MVSX3R.mjs";
12
- import {
13
- resolveFarmLayoutFonts
14
- } from "./chunk-6ZXIQSXE.mjs";
15
- import {
16
- farmEnvironmentFunctionsPlugin
17
- } from "./chunk-V6WE6JSZ.mjs";
18
7
  import {
19
8
  createFarmImageHandler
20
9
  } from "./chunk-3XNTL3FQ.mjs";
10
+ import {
11
+ addMetadataImageReference,
12
+ createFarmThemeDocumentParts,
13
+ mergeMetadata,
14
+ renderMetadataHead
15
+ } from "./chunk-SBWOTAX4.mjs";
21
16
  import {
22
17
  createEnvTypeDeclarations,
23
18
  generateEnvTypes
@@ -25,11 +20,21 @@ import {
25
20
  import {
26
21
  writeFileIfChanged
27
22
  } from "./chunk-USWZZUEH.mjs";
23
+ import {
24
+ resolveFarmLayoutFonts
25
+ } from "./chunk-6ZXIQSXE.mjs";
26
+ import {
27
+ farmEnvironmentFunctionsPlugin
28
+ } from "./chunk-V6WE6JSZ.mjs";
28
29
  import {
29
30
  getFarmRedirectError,
30
31
  isFarmNotFoundError,
31
32
  isFarmRedirectError
32
33
  } from "./chunk-7HO6AEOP.mjs";
34
+ import {
35
+ _setDefaultFarmThemeConfig,
36
+ getTheme
37
+ } from "./chunk-4IVNW5QD.mjs";
33
38
  import {
34
39
  resolveFarmDocsFontAssets,
35
40
  toFarmDocsPublicFontAssets
@@ -51,16 +56,25 @@ import {
51
56
  getFarmLayerAliases,
52
57
  getFarmSourceRoots
53
58
  } from "./chunk-74YTBPTY.mjs";
54
- import {
55
- resolveFarmPerformanceConfig
56
- } from "./chunk-7ZVN3YZI.mjs";
57
59
  import {
58
60
  getPublicFarmImageConfig,
59
61
  resolveFarmImageConfig
60
62
  } from "./chunk-GY2STC2S.mjs";
63
+ import {
64
+ resolveFarmPerformanceConfig
65
+ } from "./chunk-7ZVN3YZI.mjs";
66
+ import {
67
+ resolveWorkflowsConfig
68
+ } from "./chunk-4E6VRJ6P.mjs";
69
+ import {
70
+ resolveCronConfig
71
+ } from "./chunk-GXASWWJU.mjs";
61
72
  import {
62
73
  resolveServerActionsConfig
63
74
  } from "./chunk-WORFTBLU.mjs";
75
+ import {
76
+ resolveFarmThemeConfig
77
+ } from "./chunk-H53KVQUU.mjs";
64
78
  import {
65
79
  createFarmMarkdownRouteModuleFromFile,
66
80
  createFarmMarkdownSourceResponse,
@@ -73,12 +87,6 @@ import {
73
87
  resolveMarkdownConfig,
74
88
  resolveMarkdownMirrorTarget
75
89
  } from "./chunk-7FBJLMQH.mjs";
76
- import {
77
- resolveWorkflowsConfig
78
- } from "./chunk-4E6VRJ6P.mjs";
79
- import {
80
- resolveCronConfig
81
- } from "./chunk-GXASWWJU.mjs";
82
90
  import {
83
91
  dispatchIntegrationRequest,
84
92
  getFarmIntegrationPluginOwner,
@@ -93,7 +101,7 @@ import {
93
101
  } from "./chunk-T4QJQK76.mjs";
94
102
  import {
95
103
  MiddlewareManager
96
- } from "./chunk-MIUW47JX.mjs";
104
+ } from "./chunk-2PEJGY5V.mjs";
97
105
  import {
98
106
  _clearCurrentMiddlewareContext,
99
107
  _clearCurrentMiddlewareData,
@@ -103,6 +111,9 @@ import {
103
111
  import {
104
112
  _withAfterNodeMiddleware
105
113
  } from "./chunk-E6EPN5BT.mjs";
114
+ import {
115
+ createCliColors
116
+ } from "./chunk-GIELMNBG.mjs";
106
117
  import {
107
118
  sendWebResponse
108
119
  } from "./chunk-QGOHVJ6J.mjs";
@@ -167,7 +178,7 @@ import {
167
178
  } from "./chunk-RHIFZZUI.mjs";
168
179
  import {
169
180
  FARM_VERSION
170
- } from "./chunk-I3UWA2P2.mjs";
181
+ } from "./chunk-5NOVWCFL.mjs";
171
182
  import {
172
183
  FARM_DEPLOYMENT_ID_HEADER,
173
184
  createFarmDeploymentCookie,
@@ -4902,6 +4913,11 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
4902
4913
  const i18nSnapshot = getFarmI18nClientSnapshot();
4903
4914
  const i18nAlternateTags = i18nSnapshot ? renderI18nAlternateLinks(req.__FARM_ROUTE__ || req.url || "/", i18nSnapshot) : "";
4904
4915
  const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
4916
+ const themeDocument = createFarmThemeDocumentParts(
4917
+ this.config.theme,
4918
+ this.config.basePath,
4919
+ getTheme()
4920
+ );
4905
4921
  const streamRoot = React.createElement("div", { style: { display: "contents" } }, element);
4906
4922
  const { pipe } = renderToPipeableStream(streamRoot, {
4907
4923
  onShellReady() {
@@ -4915,8 +4931,9 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue(g
4915
4931
  console.log(`[FARM STREAM] onShellReady at ${shellReadyMs}ms`);
4916
4932
  }
4917
4933
  const shell = `<!DOCTYPE html>
4918
- <html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
4934
+ <html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
4919
4935
  <head>
4936
+ ${themeDocument.head}
4920
4937
  <meta charset="utf-8">
4921
4938
  <meta name="viewport" content="width=device-width, initial-scale=1">
4922
4939
  <meta name="farm-deployment-id" content="${escapeHtmlAttribute2(deploymentId)}">
@@ -5124,9 +5141,15 @@ ${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue(i18nSnapshot)};`
5124
5141
  </script>`;
5125
5142
  const alternateLinks = i18nSnapshot ? renderI18nAlternateLinks(requestPath, i18nSnapshot) : "";
5126
5143
  const fontHead = renderFarmFontDevHead(this.config.root || process.cwd());
5144
+ const themeDocument = createFarmThemeDocumentParts(
5145
+ this.config.theme,
5146
+ this.config.basePath,
5147
+ getTheme()
5148
+ );
5127
5149
  return `<!DOCTYPE html>
5128
- <html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}>
5150
+ <html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
5129
5151
  <head>
5152
+ ${themeDocument.head}
5130
5153
  <meta charset="utf-8">
5131
5154
  <meta name="viewport" content="width=device-width, initial-scale=1">
5132
5155
  <meta name="farm-deployment-id" content="${escapeHtmlAttribute2(this.getDeploymentId())}">
@@ -5181,6 +5204,7 @@ var _FarmApp = class _FarmApp {
5181
5204
  constructor(config = {}, viteServer) {
5182
5205
  this.config = this.normalizeConfig(config);
5183
5206
  configureFarmObservability(this.config.observability);
5207
+ _setDefaultFarmThemeConfig(this.config.theme);
5184
5208
  this.i18nRuntime = createFarmI18nRuntime(this.config.i18n);
5185
5209
  _setDefaultFarmI18nRuntime(this.i18nRuntime);
5186
5210
  this.viteServer = viteServer;
@@ -5239,6 +5263,7 @@ var _FarmApp = class _FarmApp {
5239
5263
  security: resolveFarmSecurityConfig(config.security),
5240
5264
  images: resolveFarmImageConfig(config.images),
5241
5265
  performance: resolveFarmPerformanceConfig(config.performance),
5266
+ theme: resolveFarmThemeConfig(config.theme, config.basePath || "/"),
5242
5267
  i18n: isResolvedI18nConfig(config.i18n) ? config.i18n : resolveFarmI18nConfig(config.i18n, {
5243
5268
  root,
5244
5269
  mode: process.env.NODE_ENV === "production" ? "production" : "development"
@@ -6190,6 +6215,29 @@ function mergeFarmViteConfig(farmConfig, userConfig = {}) {
6190
6215
  }
6191
6216
  __name(mergeFarmViteConfig, "mergeFarmViteConfig");
6192
6217
 
6218
+ // src/theme/vite.ts
6219
+ var FARM_DARK_VARIANT = '@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));';
6220
+ function createFarmThemeCssPlugin(input, basePath = "/") {
6221
+ const config = resolveFarmThemeConfig(input, basePath);
6222
+ return {
6223
+ name: "farm:theme-css",
6224
+ enforce: "pre",
6225
+ transform(code, id) {
6226
+ if (!config.enabled || !/\.css(?:\?.*)?$/.test(id) || !/@import\s+["']tailwindcss["']/.test(code) || /@custom-variant\s+dark\b/.test(code)) {
6227
+ return null;
6228
+ }
6229
+ return {
6230
+ code: `${code.trimEnd()}
6231
+
6232
+ ${FARM_DARK_VARIANT}
6233
+ `,
6234
+ map: null
6235
+ };
6236
+ }
6237
+ };
6238
+ }
6239
+ __name(createFarmThemeCssPlugin, "createFarmThemeCssPlugin");
6240
+
6193
6241
  // src/vite.ts
6194
6242
  var ALL_TYPE_ARTIFACTS = {
6195
6243
  routes: true,
@@ -6232,7 +6280,7 @@ function loadFarmWorkflowsDevRuntime() {
6232
6280
  }
6233
6281
  __name(loadFarmWorkflowsDevRuntime, "loadFarmWorkflowsDevRuntime");
6234
6282
  function loadFarmDevtoolsSnapshotRuntime() {
6235
- return import("./devtools-52FYXIEK.mjs");
6283
+ return import("./devtools-326RBQCN.mjs");
6236
6284
  }
6237
6285
  __name(loadFarmDevtoolsSnapshotRuntime, "loadFarmDevtoolsSnapshotRuntime");
6238
6286
  function loadFarmDevtoolsUIRuntime() {
@@ -6495,18 +6543,14 @@ function farmPlugin(options = {}, initialPluginManager) {
6495
6543
  let refreshRouteDiscovery = null;
6496
6544
  let workflowHandler = null;
6497
6545
  const logUpdate = /* @__PURE__ */ __name((tag, message) => {
6498
- try {
6499
- const pc = __require("picocolors");
6500
- const log = [
6501
- pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
6502
- pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
6503
- pc.dim("[") + pc.bold(pc.yellow("UPDATE")) + pc.dim("]"),
6504
- pc.gray(message)
6505
- ].join(" ");
6506
- console.log(log);
6507
- } catch {
6508
- console.log(`[FARM] [${tag}] [UPDATE] ${message}`);
6509
- }
6546
+ const pc = createCliColors();
6547
+ const log = [
6548
+ pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
6549
+ pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
6550
+ pc.dim("[") + pc.bold(pc.yellow("UPDATE")) + pc.dim("]"),
6551
+ pc.gray(message)
6552
+ ].join(" ");
6553
+ console.log(log);
6510
6554
  }, "logUpdate");
6511
6555
  return {
6512
6556
  name: "farm",
@@ -6947,25 +6991,21 @@ window.__FARM_MANIFEST__ = ${inlineValue({
6947
6991
  return;
6948
6992
  }
6949
6993
  logResponse.__last = { key: dedupeKey, ts: now };
6950
- try {
6951
- const pc = __require("picocolors");
6952
- let statusColor = pc.green;
6953
- if (status >= 500) statusColor = pc.red;
6954
- else if (status >= 400) statusColor = pc.yellow;
6955
- else if (status >= 300) statusColor = pc.cyan;
6956
- const log = [
6957
- pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
6958
- pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
6959
- pc.dim("[") + pc.bold(pc.white(method.padEnd(3))) + pc.dim("]"),
6960
- pc.gray(urlPath),
6961
- pc.dim("-"),
6962
- statusColor(status.toString()),
6963
- pc.dim(`(${duration}ms)`)
6964
- ].join(" ");
6965
- console.log(log);
6966
- } catch {
6967
- console.log(`[FARM] [${tag}] [${method}] ${urlPath} - ${status} (${duration}ms)`);
6968
- }
6994
+ const pc = createCliColors();
6995
+ let statusColor = pc.green;
6996
+ if (status >= 500) statusColor = pc.red;
6997
+ else if (status >= 400) statusColor = pc.yellow;
6998
+ else if (status >= 300) statusColor = pc.cyan;
6999
+ const log = [
7000
+ pc.dim("[") + pc.bold(pc.blue("FARM")) + pc.dim("]"),
7001
+ pc.dim("[") + pc.bold(pc.cyan(tag)) + pc.dim("]"),
7002
+ pc.dim("[") + pc.bold(pc.white(method.padEnd(3))) + pc.dim("]"),
7003
+ pc.gray(urlPath),
7004
+ pc.dim("-"),
7005
+ statusColor(status.toString()),
7006
+ pc.dim(`(${duration}ms)`)
7007
+ ].join(" ");
7008
+ console.log(log);
6969
7009
  }, "logResponse");
6970
7010
  server.middlewares.use(
6971
7011
  _withAfterNodeMiddleware(async (req, res, next) => {
@@ -9585,14 +9625,22 @@ async function renderPage(pageData) {
9585
9625
  if (!doc.documentElement || !doc.body) return false;
9586
9626
 
9587
9627
  resetReactRoots();
9628
+ const activeFarmTheme =
9629
+ window.__FARM_THEME__?.snapshot?.resolvedTheme ||
9630
+ document.documentElement.getAttribute('data-theme');
9588
9631
  Array.from(document.documentElement.attributes).forEach(function(attr) {
9632
+ if (attr.name === 'data-theme') return;
9589
9633
  if (!doc.documentElement.hasAttribute(attr.name)) {
9590
9634
  document.documentElement.removeAttribute(attr.name);
9591
9635
  }
9592
9636
  });
9593
9637
  Array.from(doc.documentElement.attributes).forEach(function(attr) {
9638
+ if (attr.name === 'data-theme') return;
9594
9639
  document.documentElement.setAttribute(attr.name, attr.value);
9595
9640
  });
9641
+ if (activeFarmTheme) {
9642
+ document.documentElement.setAttribute('data-theme', activeFarmTheme);
9643
+ }
9596
9644
 
9597
9645
  document.head.innerHTML = doc.head ? doc.head.innerHTML : '';
9598
9646
  document.body.innerHTML = doc.body.innerHTML;
@@ -9601,6 +9649,7 @@ async function renderPage(pageData) {
9601
9649
 
9602
9650
  setTimeout(function() {
9603
9651
  Array.from(document.querySelectorAll('script')).forEach(function(script) {
9652
+ if (script.id === 'farm-theme-script') return;
9604
9653
  const freshScript = document.createElement('script');
9605
9654
  Array.from(script.attributes).forEach(function(attr) {
9606
9655
  freshScript.setAttribute(attr.name, attr.value);
@@ -10031,7 +10080,7 @@ async function defineConfig(config = {}) {
10031
10080
  return null;
10032
10081
  }
10033
10082
  };
10034
- const pc = await import("picocolors").then((m) => m.default);
10083
+ const pc = createCliColors();
10035
10084
  let serverStarted = false;
10036
10085
  let startTime = Date.now();
10037
10086
  const farmLogger = {
@@ -10098,6 +10147,7 @@ async function defineConfig(config = {}) {
10098
10147
  };
10099
10148
  return {
10100
10149
  plugins: [
10150
+ createFarmThemeCssPlugin(config.theme, config.basePath),
10101
10151
  tailwindcss(),
10102
10152
  viteBrowserExternalPlugin,
10103
10153
  farmI18nClientBridgePlugin(),
@@ -10201,9 +10251,10 @@ export {
10201
10251
  createFarmClientOptimizeDepsConfig,
10202
10252
  createFarmSourceAlias,
10203
10253
  mergeFarmViteConfig,
10254
+ createFarmThemeCssPlugin,
10204
10255
  farmI18nClientBridgePlugin,
10205
10256
  rewriteEarlySsrRelativeImports,
10206
10257
  farmPlugin,
10207
10258
  defineConfig
10208
10259
  };
10209
- //# sourceMappingURL=chunk-FKKM7HVF.mjs.map
10260
+ //# sourceMappingURL=chunk-TX54PXAJ.mjs.map