vinext 0.0.30 → 0.0.31

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 (435) hide show
  1. package/README.md +12 -6
  2. package/dist/build/prerender.d.ts +188 -0
  3. package/dist/build/prerender.js +675 -0
  4. package/dist/build/prerender.js.map +1 -0
  5. package/dist/build/report.d.ts +45 -46
  6. package/dist/build/report.js +247 -276
  7. package/dist/build/report.js.map +1 -1
  8. package/dist/build/run-prerender.d.ts +62 -0
  9. package/dist/build/run-prerender.js +183 -0
  10. package/dist/build/run-prerender.js.map +1 -0
  11. package/dist/build/server-manifest.d.ts +19 -0
  12. package/dist/build/server-manifest.js +29 -0
  13. package/dist/build/server-manifest.js.map +1 -0
  14. package/dist/build/static-export.d.ts +51 -66
  15. package/dist/build/static-export.js +51 -545
  16. package/dist/build/static-export.js.map +1 -1
  17. package/dist/check.d.ts +26 -24
  18. package/dist/check.js +591 -571
  19. package/dist/check.js.map +1 -1
  20. package/dist/cli.d.ts +1 -15
  21. package/dist/cli.js +430 -491
  22. package/dist/cli.js.map +1 -1
  23. package/dist/client/entry.d.ts +1 -2
  24. package/dist/client/entry.js +49 -62
  25. package/dist/client/entry.js.map +1 -1
  26. package/dist/client/validate-module-path.d.ts +4 -1
  27. package/dist/client/validate-module-path.js +23 -28
  28. package/dist/client/validate-module-path.js.map +1 -1
  29. package/dist/client/vinext-next-data.d.ts +15 -20
  30. package/dist/client/vinext-next-data.js +0 -1
  31. package/dist/cloudflare/index.d.ts +3 -8
  32. package/dist/cloudflare/index.js +3 -8
  33. package/dist/cloudflare/kv-cache-handler.d.ts +95 -105
  34. package/dist/cloudflare/kv-cache-handler.js +354 -380
  35. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  36. package/dist/cloudflare/tpr.d.ts +36 -34
  37. package/dist/cloudflare/tpr.js +460 -603
  38. package/dist/cloudflare/tpr.js.map +1 -1
  39. package/dist/config/config-matchers.d.ts +31 -40
  40. package/dist/config/config-matchers.js +727 -936
  41. package/dist/config/config-matchers.js.map +1 -1
  42. package/dist/config/dotenv.d.ts +18 -11
  43. package/dist/config/dotenv.js +79 -84
  44. package/dist/config/dotenv.js.map +1 -1
  45. package/dist/config/next-config.d.ts +156 -146
  46. package/dist/config/next-config.js +374 -464
  47. package/dist/config/next-config.js.map +1 -1
  48. package/dist/deploy.d.ts +87 -96
  49. package/dist/deploy.js +490 -628
  50. package/dist/deploy.js.map +1 -1
  51. package/dist/entries/app-browser-entry.d.ts +4 -1
  52. package/dist/entries/app-browser-entry.js +12 -8
  53. package/dist/entries/app-browser-entry.js.map +1 -1
  54. package/dist/entries/app-rsc-entry.d.ts +33 -20
  55. package/dist/entries/app-rsc-entry.js +442 -211
  56. package/dist/entries/app-rsc-entry.js.map +1 -1
  57. package/dist/entries/app-ssr-entry.d.ts +9 -1
  58. package/dist/entries/app-ssr-entry.js +61 -28
  59. package/dist/entries/app-ssr-entry.js.map +1 -1
  60. package/dist/entries/pages-client-entry.d.ts +6 -2
  61. package/dist/entries/pages-client-entry.js +30 -33
  62. package/dist/entries/pages-client-entry.js.map +1 -1
  63. package/dist/entries/pages-entry-helpers.d.ts +5 -1
  64. package/dist/entries/pages-entry-helpers.js +17 -14
  65. package/dist/entries/pages-entry-helpers.js.map +1 -1
  66. package/dist/entries/pages-server-entry.d.ts +6 -2
  67. package/dist/entries/pages-server-entry.js +84 -113
  68. package/dist/entries/pages-server-entry.js.map +1 -1
  69. package/dist/index.d.ts +82 -62
  70. package/dist/index.js +2172 -3133
  71. package/dist/index.js.map +1 -1
  72. package/dist/init.d.ts +40 -37
  73. package/dist/init.js +201 -258
  74. package/dist/init.js.map +1 -1
  75. package/dist/plugins/async-hooks-stub.d.ts +7 -3
  76. package/dist/plugins/async-hooks-stub.js +39 -42
  77. package/dist/plugins/async-hooks-stub.js.map +1 -1
  78. package/dist/plugins/client-reference-dedup.d.ts +7 -3
  79. package/dist/plugins/client-reference-dedup.js +63 -88
  80. package/dist/plugins/client-reference-dedup.js.map +1 -1
  81. package/dist/routing/app-router.d.ts +100 -96
  82. package/dist/routing/app-router.js +560 -670
  83. package/dist/routing/app-router.js.map +1 -1
  84. package/dist/routing/file-matcher.d.ts +18 -15
  85. package/dist/routing/file-matcher.js +65 -65
  86. package/dist/routing/file-matcher.js.map +1 -1
  87. package/dist/routing/pages-router.d.ts +23 -24
  88. package/dist/routing/pages-router.js +147 -172
  89. package/dist/routing/pages-router.js.map +1 -1
  90. package/dist/routing/route-trie.d.ts +23 -20
  91. package/dist/routing/route-trie.js +131 -151
  92. package/dist/routing/route-trie.js.map +1 -1
  93. package/dist/routing/route-validation.d.ts +5 -2
  94. package/dist/routing/route-validation.js +98 -130
  95. package/dist/routing/route-validation.js.map +1 -1
  96. package/dist/routing/utils.d.ts +10 -7
  97. package/dist/routing/utils.js +75 -111
  98. package/dist/routing/utils.js.map +1 -1
  99. package/dist/server/api-handler.d.ts +8 -13
  100. package/dist/server/api-handler.js +161 -193
  101. package/dist/server/api-handler.js.map +1 -1
  102. package/dist/server/app-router-entry.d.ts +6 -16
  103. package/dist/server/app-router-entry.js +26 -54
  104. package/dist/server/app-router-entry.js.map +1 -1
  105. package/dist/server/dev-module-runner.d.ts +11 -64
  106. package/dist/server/dev-module-runner.js +89 -101
  107. package/dist/server/dev-module-runner.js.map +1 -1
  108. package/dist/server/dev-origin-check.d.ts +12 -10
  109. package/dist/server/dev-origin-check.js +98 -108
  110. package/dist/server/dev-origin-check.js.map +1 -1
  111. package/dist/server/dev-server.d.ts +17 -14
  112. package/dist/server/dev-server.js +542 -869
  113. package/dist/server/dev-server.js.map +1 -1
  114. package/dist/server/html.d.ts +4 -1
  115. package/dist/server/html.js +25 -26
  116. package/dist/server/html.js.map +1 -1
  117. package/dist/server/image-optimization.d.ts +31 -28
  118. package/dist/server/image-optimization.js +181 -210
  119. package/dist/server/image-optimization.js.map +1 -1
  120. package/dist/server/instrumentation.d.ts +25 -22
  121. package/dist/server/instrumentation.js +110 -122
  122. package/dist/server/instrumentation.js.map +1 -1
  123. package/dist/server/isr-cache.d.ts +16 -26
  124. package/dist/server/isr-cache.js +106 -128
  125. package/dist/server/isr-cache.js.map +1 -1
  126. package/dist/server/metadata-routes.d.ts +85 -88
  127. package/dist/server/metadata-routes.js +270 -317
  128. package/dist/server/metadata-routes.js.map +1 -1
  129. package/dist/server/middleware-codegen.d.ts +7 -4
  130. package/dist/server/middleware-codegen.js +61 -61
  131. package/dist/server/middleware-codegen.js.map +1 -1
  132. package/dist/server/middleware-request-headers.d.ts +8 -6
  133. package/dist/server/middleware-request-headers.js +47 -65
  134. package/dist/server/middleware-request-headers.js.map +1 -1
  135. package/dist/server/middleware.d.ts +31 -47
  136. package/dist/server/middleware.js +273 -404
  137. package/dist/server/middleware.js.map +1 -1
  138. package/dist/server/normalize-path.d.ts +4 -1
  139. package/dist/server/normalize-path.js +33 -47
  140. package/dist/server/normalize-path.js.map +1 -1
  141. package/dist/server/pages-i18n.d.ts +38 -30
  142. package/dist/server/pages-i18n.js +112 -139
  143. package/dist/server/pages-i18n.js.map +1 -1
  144. package/dist/server/prod-server.d.ts +19 -31
  145. package/dist/server/prod-server.js +714 -945
  146. package/dist/server/prod-server.js.map +1 -1
  147. package/dist/server/request-log.d.ts +18 -12
  148. package/dist/server/request-log.js +45 -52
  149. package/dist/server/request-log.js.map +1 -1
  150. package/dist/server/request-pipeline.d.ts +9 -17
  151. package/dist/server/request-pipeline.js +133 -184
  152. package/dist/server/request-pipeline.js.map +1 -1
  153. package/dist/server/worker-utils.d.ts +4 -1
  154. package/dist/server/worker-utils.js +31 -37
  155. package/dist/server/worker-utils.js.map +1 -1
  156. package/dist/shims/amp.d.ts +5 -2
  157. package/dist/shims/amp.js +19 -15
  158. package/dist/shims/amp.js.map +1 -1
  159. package/dist/shims/app.d.ts +8 -10
  160. package/dist/shims/app.js +0 -1
  161. package/dist/shims/cache-runtime.d.ts +20 -45
  162. package/dist/shims/cache-runtime.js +271 -422
  163. package/dist/shims/cache-runtime.js.map +1 -1
  164. package/dist/shims/cache.d.ts +130 -121
  165. package/dist/shims/cache.js +339 -427
  166. package/dist/shims/cache.js.map +1 -1
  167. package/dist/shims/client-only.d.ts +1 -18
  168. package/dist/shims/client-only.js +0 -17
  169. package/dist/shims/compat-router.d.ts +4 -1
  170. package/dist/shims/compat-router.js +23 -19
  171. package/dist/shims/compat-router.js.map +1 -1
  172. package/dist/shims/config.d.ts +7 -5
  173. package/dist/shims/config.js +16 -23
  174. package/dist/shims/config.js.map +1 -1
  175. package/dist/shims/constants.d.ts +119 -118
  176. package/dist/shims/constants.js +159 -164
  177. package/dist/shims/constants.js.map +1 -1
  178. package/dist/shims/document.d.ts +20 -16
  179. package/dist/shims/document.js +41 -22
  180. package/dist/shims/document.js.map +1 -1
  181. package/dist/shims/dynamic.d.ts +13 -22
  182. package/dist/shims/dynamic.js +122 -136
  183. package/dist/shims/dynamic.js.map +1 -1
  184. package/dist/shims/error-boundary.d.ts +22 -15
  185. package/dist/shims/error-boundary.js +81 -79
  186. package/dist/shims/error-boundary.js.map +1 -1
  187. package/dist/shims/error.d.ts +11 -12
  188. package/dist/shims/error.js +35 -39
  189. package/dist/shims/error.js.map +1 -1
  190. package/dist/shims/fetch-cache.d.ts +16 -14
  191. package/dist/shims/fetch-cache.js +437 -645
  192. package/dist/shims/fetch-cache.js.map +1 -1
  193. package/dist/shims/font-google-base.d.ts +28 -26
  194. package/dist/shims/font-google-base.js +238 -325
  195. package/dist/shims/font-google-base.js.map +1 -1
  196. package/dist/shims/font-google.d.ts +3 -3
  197. package/dist/shims/font-google.generated.d.ts +1928 -1924
  198. package/dist/shims/font-google.generated.js +1928 -2133
  199. package/dist/shims/font-google.generated.js.map +1 -1
  200. package/dist/shims/font-google.js +3 -3
  201. package/dist/shims/font-local.d.ts +28 -26
  202. package/dist/shims/font-local.js +204 -260
  203. package/dist/shims/font-local.js.map +1 -1
  204. package/dist/shims/form.d.ts +13 -27
  205. package/dist/shims/form.js +128 -180
  206. package/dist/shims/form.js.map +1 -1
  207. package/dist/shims/head-state.d.ts +8 -13
  208. package/dist/shims/head-state.js +25 -42
  209. package/dist/shims/head-state.js.map +1 -1
  210. package/dist/shims/head.d.ts +16 -20
  211. package/dist/shims/head.js +172 -250
  212. package/dist/shims/head.js.map +1 -1
  213. package/dist/shims/headers.d.ts +84 -78
  214. package/dist/shims/headers.js +447 -575
  215. package/dist/shims/headers.js.map +1 -1
  216. package/dist/shims/i18n-context.d.ts +16 -20
  217. package/dist/shims/i18n-context.js +35 -48
  218. package/dist/shims/i18n-context.js.map +1 -1
  219. package/dist/shims/i18n-state.d.ts +8 -14
  220. package/dist/shims/i18n-state.js +34 -42
  221. package/dist/shims/i18n-state.js.map +1 -1
  222. package/dist/shims/image-config.d.ts +11 -8
  223. package/dist/shims/image-config.js +50 -83
  224. package/dist/shims/image-config.js.map +1 -1
  225. package/dist/shims/image.d.ts +37 -46
  226. package/dist/shims/image.js +283 -308
  227. package/dist/shims/image.js.map +1 -1
  228. package/dist/shims/internal/api-utils.d.ts +7 -4
  229. package/dist/shims/internal/api-utils.js +0 -6
  230. package/dist/shims/internal/app-router-context.d.ts +22 -17
  231. package/dist/shims/internal/app-router-context.js +17 -13
  232. package/dist/shims/internal/app-router-context.js.map +1 -1
  233. package/dist/shims/internal/cookies.d.ts +2 -9
  234. package/dist/shims/internal/cookies.js +2 -9
  235. package/dist/shims/internal/parse-cookie-header.d.ts +4 -1
  236. package/dist/shims/internal/parse-cookie-header.js +29 -29
  237. package/dist/shims/internal/parse-cookie-header.js.map +1 -1
  238. package/dist/shims/internal/router-context.d.ts +6 -1
  239. package/dist/shims/internal/router-context.js +11 -7
  240. package/dist/shims/internal/router-context.js.map +1 -1
  241. package/dist/shims/internal/utils.d.ts +40 -37
  242. package/dist/shims/internal/utils.js +24 -30
  243. package/dist/shims/internal/utils.js.map +1 -1
  244. package/dist/shims/internal/work-unit-async-storage.d.ts +6 -10
  245. package/dist/shims/internal/work-unit-async-storage.js +14 -11
  246. package/dist/shims/internal/work-unit-async-storage.js.map +1 -1
  247. package/dist/shims/layout-segment-context.d.ts +11 -14
  248. package/dist/shims/layout-segment-context.js +24 -23
  249. package/dist/shims/layout-segment-context.js.map +1 -1
  250. package/dist/shims/legacy-image.d.ts +39 -46
  251. package/dist/shims/legacy-image.js +47 -42
  252. package/dist/shims/legacy-image.js.map +1 -1
  253. package/dist/shims/link.d.ts +32 -36
  254. package/dist/shims/link.js +255 -391
  255. package/dist/shims/link.js.map +1 -1
  256. package/dist/shims/metadata.d.ts +210 -202
  257. package/dist/shims/metadata.js +545 -546
  258. package/dist/shims/metadata.js.map +1 -1
  259. package/dist/shims/navigation-state.d.ts +10 -18
  260. package/dist/shims/navigation-state.js +66 -74
  261. package/dist/shims/navigation-state.js.map +1 -1
  262. package/dist/shims/navigation.d.ts +59 -63
  263. package/dist/shims/navigation.js +505 -704
  264. package/dist/shims/navigation.js.map +1 -1
  265. package/dist/shims/og.d.ts +2 -20
  266. package/dist/shims/og.js +2 -19
  267. package/dist/shims/readonly-url-search-params.d.ts +8 -5
  268. package/dist/shims/readonly-url-search-params.js +26 -22
  269. package/dist/shims/readonly-url-search-params.js.map +1 -1
  270. package/dist/shims/request-context.d.ts +8 -5
  271. package/dist/shims/request-context.js +50 -60
  272. package/dist/shims/request-context.js.map +1 -1
  273. package/dist/shims/request-state-types.d.ts +11 -11
  274. package/dist/shims/request-state-types.js +0 -1
  275. package/dist/shims/router-state.d.ts +13 -10
  276. package/dist/shims/router-state.js +34 -43
  277. package/dist/shims/router-state.js.map +1 -1
  278. package/dist/shims/router.d.ts +81 -85
  279. package/dist/shims/router.js +506 -628
  280. package/dist/shims/router.js.map +1 -1
  281. package/dist/shims/script.d.ts +39 -48
  282. package/dist/shims/script.js +107 -160
  283. package/dist/shims/script.js.map +1 -1
  284. package/dist/shims/server-only.d.ts +1 -19
  285. package/dist/shims/server-only.js +0 -18
  286. package/dist/shims/server.d.ts +175 -164
  287. package/dist/shims/server.js +462 -478
  288. package/dist/shims/server.js.map +1 -1
  289. package/dist/shims/unified-request-context.d.ts +20 -20
  290. package/dist/shims/unified-request-context.js +81 -99
  291. package/dist/shims/unified-request-context.js.map +1 -1
  292. package/dist/shims/url-safety.d.ts +4 -1
  293. package/dist/shims/url-safety.js +15 -11
  294. package/dist/shims/url-safety.js.map +1 -1
  295. package/dist/shims/url-utils.d.ts +8 -5
  296. package/dist/shims/url-utils.js +62 -93
  297. package/dist/shims/url-utils.js.map +1 -1
  298. package/dist/shims/web-vitals.d.ts +10 -8
  299. package/dist/shims/web-vitals.js +9 -15
  300. package/dist/shims/web-vitals.js.map +1 -1
  301. package/dist/utils/base-path.d.ts +5 -2
  302. package/dist/utils/base-path.js +21 -19
  303. package/dist/utils/base-path.js.map +1 -1
  304. package/dist/utils/domain-locale.d.ts +17 -9
  305. package/dist/utils/domain-locale.js +36 -56
  306. package/dist/utils/domain-locale.js.map +1 -1
  307. package/dist/utils/hash.d.ts +4 -1
  308. package/dist/utils/hash.js +19 -17
  309. package/dist/utils/hash.js.map +1 -1
  310. package/dist/utils/manifest-paths.d.ts +6 -3
  311. package/dist/utils/manifest-paths.js +15 -16
  312. package/dist/utils/manifest-paths.js.map +1 -1
  313. package/dist/utils/project.d.ts +13 -11
  314. package/dist/utils/project.js +169 -216
  315. package/dist/utils/project.js.map +1 -1
  316. package/dist/utils/query.d.ts +8 -6
  317. package/dist/utils/query.js +57 -67
  318. package/dist/utils/query.js.map +1 -1
  319. package/package.json +10 -9
  320. package/dist/build/report.d.ts.map +0 -1
  321. package/dist/build/static-export.d.ts.map +0 -1
  322. package/dist/check.d.ts.map +0 -1
  323. package/dist/cli.d.ts.map +0 -1
  324. package/dist/client/entry.d.ts.map +0 -1
  325. package/dist/client/validate-module-path.d.ts.map +0 -1
  326. package/dist/client/vinext-next-data.d.ts.map +0 -1
  327. package/dist/client/vinext-next-data.js.map +0 -1
  328. package/dist/cloudflare/index.d.ts.map +0 -1
  329. package/dist/cloudflare/index.js.map +0 -1
  330. package/dist/cloudflare/kv-cache-handler.d.ts.map +0 -1
  331. package/dist/cloudflare/tpr.d.ts.map +0 -1
  332. package/dist/config/config-matchers.d.ts.map +0 -1
  333. package/dist/config/dotenv.d.ts.map +0 -1
  334. package/dist/config/next-config.d.ts.map +0 -1
  335. package/dist/deploy.d.ts.map +0 -1
  336. package/dist/entries/app-browser-entry.d.ts.map +0 -1
  337. package/dist/entries/app-rsc-entry.d.ts.map +0 -1
  338. package/dist/entries/app-ssr-entry.d.ts.map +0 -1
  339. package/dist/entries/pages-client-entry.d.ts.map +0 -1
  340. package/dist/entries/pages-entry-helpers.d.ts.map +0 -1
  341. package/dist/entries/pages-server-entry.d.ts.map +0 -1
  342. package/dist/index.d.ts.map +0 -1
  343. package/dist/init.d.ts.map +0 -1
  344. package/dist/plugins/async-hooks-stub.d.ts.map +0 -1
  345. package/dist/plugins/client-reference-dedup.d.ts.map +0 -1
  346. package/dist/routing/app-router.d.ts.map +0 -1
  347. package/dist/routing/file-matcher.d.ts.map +0 -1
  348. package/dist/routing/pages-router.d.ts.map +0 -1
  349. package/dist/routing/route-trie.d.ts.map +0 -1
  350. package/dist/routing/route-validation.d.ts.map +0 -1
  351. package/dist/routing/utils.d.ts.map +0 -1
  352. package/dist/server/api-handler.d.ts.map +0 -1
  353. package/dist/server/app-router-entry.d.ts.map +0 -1
  354. package/dist/server/dev-module-runner.d.ts.map +0 -1
  355. package/dist/server/dev-origin-check.d.ts.map +0 -1
  356. package/dist/server/dev-server.d.ts.map +0 -1
  357. package/dist/server/html.d.ts.map +0 -1
  358. package/dist/server/image-optimization.d.ts.map +0 -1
  359. package/dist/server/instrumentation.d.ts.map +0 -1
  360. package/dist/server/isr-cache.d.ts.map +0 -1
  361. package/dist/server/metadata-routes.d.ts.map +0 -1
  362. package/dist/server/middleware-codegen.d.ts.map +0 -1
  363. package/dist/server/middleware-request-headers.d.ts.map +0 -1
  364. package/dist/server/middleware.d.ts.map +0 -1
  365. package/dist/server/normalize-path.d.ts.map +0 -1
  366. package/dist/server/pages-i18n.d.ts.map +0 -1
  367. package/dist/server/prod-server.d.ts.map +0 -1
  368. package/dist/server/request-log.d.ts.map +0 -1
  369. package/dist/server/request-pipeline.d.ts.map +0 -1
  370. package/dist/server/worker-utils.d.ts.map +0 -1
  371. package/dist/shims/amp.d.ts.map +0 -1
  372. package/dist/shims/app.d.ts.map +0 -1
  373. package/dist/shims/app.js.map +0 -1
  374. package/dist/shims/cache-runtime.d.ts.map +0 -1
  375. package/dist/shims/cache.d.ts.map +0 -1
  376. package/dist/shims/client-only.d.ts.map +0 -1
  377. package/dist/shims/client-only.js.map +0 -1
  378. package/dist/shims/compat-router.d.ts.map +0 -1
  379. package/dist/shims/config.d.ts.map +0 -1
  380. package/dist/shims/constants.d.ts.map +0 -1
  381. package/dist/shims/document.d.ts.map +0 -1
  382. package/dist/shims/dynamic.d.ts.map +0 -1
  383. package/dist/shims/error-boundary.d.ts.map +0 -1
  384. package/dist/shims/error.d.ts.map +0 -1
  385. package/dist/shims/fetch-cache.d.ts.map +0 -1
  386. package/dist/shims/font-google-base.d.ts.map +0 -1
  387. package/dist/shims/font-google.d.ts.map +0 -1
  388. package/dist/shims/font-google.generated.d.ts.map +0 -1
  389. package/dist/shims/font-google.js.map +0 -1
  390. package/dist/shims/font-local.d.ts.map +0 -1
  391. package/dist/shims/form.d.ts.map +0 -1
  392. package/dist/shims/head-state.d.ts.map +0 -1
  393. package/dist/shims/head.d.ts.map +0 -1
  394. package/dist/shims/headers.d.ts.map +0 -1
  395. package/dist/shims/i18n-context.d.ts.map +0 -1
  396. package/dist/shims/i18n-state.d.ts.map +0 -1
  397. package/dist/shims/image-config.d.ts.map +0 -1
  398. package/dist/shims/image.d.ts.map +0 -1
  399. package/dist/shims/internal/api-utils.d.ts.map +0 -1
  400. package/dist/shims/internal/api-utils.js.map +0 -1
  401. package/dist/shims/internal/app-router-context.d.ts.map +0 -1
  402. package/dist/shims/internal/cookies.d.ts.map +0 -1
  403. package/dist/shims/internal/cookies.js.map +0 -1
  404. package/dist/shims/internal/parse-cookie-header.d.ts.map +0 -1
  405. package/dist/shims/internal/router-context.d.ts.map +0 -1
  406. package/dist/shims/internal/utils.d.ts.map +0 -1
  407. package/dist/shims/internal/work-unit-async-storage.d.ts.map +0 -1
  408. package/dist/shims/layout-segment-context.d.ts.map +0 -1
  409. package/dist/shims/legacy-image.d.ts.map +0 -1
  410. package/dist/shims/link.d.ts.map +0 -1
  411. package/dist/shims/metadata.d.ts.map +0 -1
  412. package/dist/shims/navigation-state.d.ts.map +0 -1
  413. package/dist/shims/navigation.d.ts.map +0 -1
  414. package/dist/shims/og.d.ts.map +0 -1
  415. package/dist/shims/og.js.map +0 -1
  416. package/dist/shims/readonly-url-search-params.d.ts.map +0 -1
  417. package/dist/shims/request-context.d.ts.map +0 -1
  418. package/dist/shims/request-state-types.d.ts.map +0 -1
  419. package/dist/shims/request-state-types.js.map +0 -1
  420. package/dist/shims/router-state.d.ts.map +0 -1
  421. package/dist/shims/router.d.ts.map +0 -1
  422. package/dist/shims/script.d.ts.map +0 -1
  423. package/dist/shims/server-only.d.ts.map +0 -1
  424. package/dist/shims/server-only.js.map +0 -1
  425. package/dist/shims/server.d.ts.map +0 -1
  426. package/dist/shims/unified-request-context.d.ts.map +0 -1
  427. package/dist/shims/url-safety.d.ts.map +0 -1
  428. package/dist/shims/url-utils.d.ts.map +0 -1
  429. package/dist/shims/web-vitals.d.ts.map +0 -1
  430. package/dist/utils/base-path.d.ts.map +0 -1
  431. package/dist/utils/domain-locale.d.ts.map +0 -1
  432. package/dist/utils/hash.d.ts.map +0 -1
  433. package/dist/utils/manifest-paths.d.ts.map +0 -1
  434. package/dist/utils/project.d.ts.map +0 -1
  435. package/dist/utils/query.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"font-google-base.js","sourceRoot":"","sources":["../../src/shims/font-google-base.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * next/font/google shim\n *\n * Provides a compatible shim for Next.js Google Fonts.\n *\n * Two modes:\n * 1. **Dev / CDN mode** (default): Loads fonts from Google Fonts CDN via <link> tags.\n * 2. **Self-hosted mode** (production build): The vinext:google-fonts Vite plugin\n * fetches font CSS + .woff2 files at build time, caches them locally, and injects\n * @font-face CSS pointing at local assets. No requests to Google at runtime.\n *\n * Usage:\n * import { Inter } from 'next/font/google';\n * const inter = Inter({ subsets: ['latin'], weight: ['400', '700'] });\n * // inter.className -> unique CSS class\n * // inter.style -> { fontFamily: \"'Inter', sans-serif\" }\n * // inter.variable -> CSS variable name like '--font-inter'\n */\n\n/**\n * Escape a string for safe interpolation inside a CSS single-quoted string.\n *\n * Prevents CSS injection by escaping characters that could break out of\n * a `'...'` CSS string context: backslashes, single quotes, and newlines.\n */\nfunction escapeCSSString(value: string): string {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/'/g, \"\\\\'\")\n .replace(/\\n/g, \"\\\\a \")\n .replace(/\\r/g, \"\\\\d \");\n}\n\n/**\n * Validate a CSS custom property name (e.g. `--font-inter`).\n *\n * Custom properties must start with `--` and only contain alphanumeric\n * characters, hyphens, and underscores. Anything else could be used to\n * break out of the CSS declaration and inject arbitrary rules.\n *\n * Returns the name if valid, undefined otherwise.\n */\nfunction sanitizeCSSVarName(name: string): string | undefined {\n if (/^--[a-zA-Z0-9_-]+$/.test(name)) return name;\n return undefined;\n}\n\n/**\n * Sanitize a CSS font-family fallback name.\n *\n * Generic family names (sans-serif, serif, monospace, etc.) are used as-is.\n * Named families are wrapped in escaped quotes. This prevents injection via\n * crafted fallback values like `); } body { color: red; } .x {`.\n */\nfunction sanitizeFallback(name: string): string {\n // CSS generic font families — safe to use unquoted\n const generics = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"emoji\",\n \"math\",\n \"fangsong\",\n ]);\n const trimmed = name.trim();\n if (generics.has(trimmed)) return trimmed;\n // Wrap in single quotes with escaping to prevent CSS injection\n return `'${escapeCSSString(trimmed)}'`;\n}\n\n// Counter for generating unique class names\nlet classCounter = 0;\n\n// Track which font stylesheets have been injected (SSR + client)\nconst injectedFonts = new Set<string>();\n\nexport interface FontOptions {\n weight?: string | string[];\n style?: string | string[];\n subsets?: string[];\n display?: string;\n preload?: boolean;\n fallback?: string[];\n adjustFontFallback?: boolean | string;\n variable?: string;\n axes?: string[];\n}\n\nexport interface FontResult {\n className: string;\n style: { fontFamily: string };\n variable?: string;\n}\n\n/**\n * Convert a font family name to a CSS variable name.\n * e.g., \"Inter\" -> \"--font-inter\", \"Roboto Mono\" -> \"--font-roboto-mono\"\n */\nfunction toVarName(family: string): string {\n return \"--font-\" + family.toLowerCase().replace(/\\s+/g, \"-\");\n}\n\n/**\n * Build a Google Fonts CSS URL.\n */\nexport function buildGoogleFontsUrl(family: string, options: FontOptions): string {\n const params = new URLSearchParams();\n // Don't pre-replace spaces with \"+\". URLSearchParams handles encoding:\n // spaces become \"+\" in application/x-www-form-urlencoded format.\n // Pre-replacing would cause double-encoding: \"+\" -> \"%2B\" (400 error).\n let spec = family;\n\n // Build weight/style specs\n const weights = options.weight\n ? Array.isArray(options.weight)\n ? options.weight\n : [options.weight]\n : [];\n const styles = options.style\n ? Array.isArray(options.style)\n ? options.style\n : [options.style]\n : [];\n\n if (weights.length > 0 || styles.length > 0) {\n const hasItalic = styles.includes(\"italic\");\n if (weights.length > 0) {\n if (hasItalic) {\n // Use ital axis: ital,wght@0,400;0,700;1,400;1,700\n const pairs: string[] = [];\n for (const w of weights) {\n pairs.push(`0,${w}`);\n pairs.push(`1,${w}`);\n }\n spec += `:ital,wght@${pairs.join(\";\")}`;\n } else {\n spec += `:wght@${weights.join(\";\")}`;\n }\n }\n } else {\n // When no weight is specified, request the full variable weight range.\n // Without this, Google Fonts returns only weight 400 (the default).\n // Next.js loads the full variable font by default, so we match that\n // behavior to ensure all font weights render correctly.\n spec += `:wght@100..900`;\n }\n\n params.set(\"family\", spec);\n params.set(\"display\", options.display ?? \"swap\");\n\n return `https://fonts.googleapis.com/css2?${params.toString()}`;\n}\n\n/**\n * Inject a <link> tag for the font (client-side only).\n * On the server, we track font URLs for SSR head injection.\n */\nfunction injectFontStylesheet(url: string): void {\n if (injectedFonts.has(url)) return;\n injectedFonts.add(url);\n\n if (typeof document !== \"undefined\") {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = url;\n document.head.appendChild(link);\n }\n}\n\n/** Track which className CSS rules have been injected. */\nconst injectedClassRules = new Set<string>();\n\n/**\n * Inject a CSS rule that maps a className to a font-family.\n *\n * This is what makes `<div className={inter.className}>` apply the font.\n * Next.js generates equivalent rules at build time.\n *\n * In Next.js, the .className class ONLY sets font-family — it does NOT\n * set CSS variables. CSS variables are handled separately by the .variable class.\n */\nfunction injectClassNameRule(className: string, fontFamily: string): void {\n if (injectedClassRules.has(className)) return;\n injectedClassRules.add(className);\n\n const css = `.${className} { font-family: ${fontFamily}; }\\n`;\n\n // On server, store the CSS for SSR injection\n if (typeof document === \"undefined\") {\n ssrFontStyles.push(css);\n return;\n }\n\n // On client, inject a <style> tag\n const style = document.createElement(\"style\");\n style.textContent = css;\n style.setAttribute(\"data-vinext-font-class\", className);\n document.head.appendChild(style);\n}\n\n/** Track which variable class CSS rules have been injected. */\nconst injectedVariableRules = new Set<string>();\n\n/** Track which :root CSS variable rules have been injected. */\nconst injectedRootVariables = new Set<string>();\n\n/**\n * Inject a CSS rule that sets a CSS variable on an element.\n * This is what makes `<html className={inter.variable}>` set the CSS variable\n * that can be referenced by other styles (e.g., Tailwind's font-sans).\n *\n * In Next.js, the .variable class ONLY sets the CSS variable — it does NOT\n * set font-family. This is critical because apps commonly apply multiple\n * .variable classes to <body> (e.g., geistSans.variable + geistMono.variable).\n * If we also set font-family here, the last class wins due to CSS cascade,\n * causing all text to use that font (e.g., everything becomes monospace).\n */\nfunction injectVariableClassRule(\n variableClassName: string,\n cssVarName: string,\n fontFamily: string,\n): void {\n if (injectedVariableRules.has(variableClassName)) return;\n injectedVariableRules.add(variableClassName);\n\n // Only set the CSS variable — do NOT set font-family.\n // This matches Next.js behavior where .variable classes only define CSS variables.\n let css = `.${variableClassName} { ${cssVarName}: ${fontFamily}; }\\n`;\n\n // Also inject at :root so CSS variable inheritance works throughout the page.\n // This ensures Tailwind utilities like `font-sans` that reference these\n // variables via var(--font-geist-sans) work correctly.\n if (!injectedRootVariables.has(cssVarName)) {\n injectedRootVariables.add(cssVarName);\n css += `:root { ${cssVarName}: ${fontFamily}; }\\n`;\n }\n\n // On server, store the CSS for SSR injection\n if (typeof document === \"undefined\") {\n ssrFontStyles.push(css);\n return;\n }\n\n // On client, inject a <style> tag\n const style = document.createElement(\"style\");\n style.textContent = css;\n style.setAttribute(\"data-vinext-font-variable\", variableClassName);\n document.head.appendChild(style);\n}\n\n// SSR: collect font class CSS for injection in <head>\nconst ssrFontStyles: string[] = [];\n\n/**\n * Get collected SSR font class styles (used by the renderer).\n * Note: We don't clear the arrays because fonts are loaded at module import\n * time and need to persist across all requests in the Workers environment.\n */\nexport function getSSRFontStyles(): string[] {\n return [...ssrFontStyles];\n}\n\n// SSR: collect font URLs to inject in <head>\nconst ssrFontUrls: string[] = [];\n\n/**\n * Get collected SSR font URLs (used by the renderer).\n * Note: We don't clear the arrays because fonts are loaded at module import\n * time and need to persist across all requests in the Workers environment.\n */\nexport function getSSRFontLinks(): string[] {\n return [...ssrFontUrls];\n}\n\n// SSR: collect font file URLs for <link rel=\"preload\"> injection (self-hosted Google fonts)\nconst ssrFontPreloads: Array<{ href: string; type: string }> = [];\nconst ssrFontPreloadHrefs = new Set<string>();\n\n/**\n * Get collected SSR font preload data (used by the renderer).\n * Returns an array of { href, type } objects for emitting\n * <link rel=\"preload\" as=\"font\" ...> tags.\n */\nexport function getSSRFontPreloads(): Array<{ href: string; type: string }> {\n return [...ssrFontPreloads];\n}\n\n/**\n * Determine the MIME type for a font file based on its extension.\n */\nfunction getFontMimeType(pathOrUrl: string): string {\n if (pathOrUrl.endsWith(\".woff2\")) return \"font/woff2\";\n if (pathOrUrl.endsWith(\".woff\")) return \"font/woff\";\n if (pathOrUrl.endsWith(\".ttf\")) return \"font/ttf\";\n if (pathOrUrl.endsWith(\".otf\")) return \"font/opentype\";\n return \"font/woff2\";\n}\n\n/**\n * Extract font file URLs from @font-face CSS rules.\n * Parses url('...') references from the CSS text.\n */\nfunction extractFontUrlsFromCSS(css: string): string[] {\n const urls: string[] = [];\n const urlRegex = /url\\(['\"]?([^'\")]+)['\"]?\\)/g;\n let match: RegExpExecArray | null;\n while ((match = urlRegex.exec(css)) !== null) {\n const url = match[1];\n // Only collect absolute paths (starting with /) — these are self-hosted font files\n if (url && url.startsWith(\"/\")) {\n urls.push(url);\n }\n }\n return urls;\n}\n\n/**\n * Collect font file URLs from self-hosted CSS for preload link generation.\n * Only collects on the server (SSR). Deduplicates by href using a Set for O(1) lookups.\n */\nfunction collectFontPreloadsFromCSS(css: string): void {\n if (typeof document !== \"undefined\") return; // client-side, skip\n\n const urls = extractFontUrlsFromCSS(css);\n for (const href of urls) {\n if (!ssrFontPreloadHrefs.has(href)) {\n ssrFontPreloadHrefs.add(href);\n ssrFontPreloads.push({ href, type: getFontMimeType(href) });\n }\n }\n}\n\n/** Track injected self-hosted @font-face blocks (deduplicate) */\nconst injectedSelfHosted = new Set<string>();\n\n/**\n * Inject self-hosted @font-face CSS (from the build plugin).\n * This replaces the CDN <link> tag with inline CSS.\n */\nfunction injectSelfHostedCSS(css: string): void {\n if (injectedSelfHosted.has(css)) return;\n injectedSelfHosted.add(css);\n\n // Extract font file URLs for preload hints (SSR only)\n collectFontPreloadsFromCSS(css);\n\n if (typeof document === \"undefined\") {\n // SSR: add to collected styles\n ssrFontStyles.push(css);\n return;\n }\n\n // Client: inject <style> tag\n const style = document.createElement(\"style\");\n style.textContent = css;\n style.setAttribute(\"data-vinext-font-selfhosted\", \"true\");\n document.head.appendChild(style);\n}\n\nexport type FontLoader = (options?: FontOptions & { _selfHostedCSS?: string }) => FontResult;\n\nexport function createFontLoader(family: string): FontLoader {\n return function fontLoader(options: FontOptions & { _selfHostedCSS?: string } = {}): FontResult {\n const id = classCounter++;\n const className = `__font_${family.toLowerCase().replace(/\\s+/g, \"_\")}_${id}`;\n const fallback = options.fallback ?? [\"sans-serif\"];\n // Sanitize each fallback name to prevent CSS injection via crafted values\n const fontFamily = `'${escapeCSSString(family)}', ${fallback.map(sanitizeFallback).join(\", \")}`;\n // Validate CSS variable name — reject anything that could inject CSS.\n // Fall back to auto-generated name if invalid.\n const defaultVarName = toVarName(family);\n const cssVarName = options.variable\n ? (sanitizeCSSVarName(options.variable) ?? defaultVarName)\n : defaultVarName;\n // In Next.js, `variable` returns a CLASS NAME that sets the CSS variable.\n // Users apply this class to set the CSS variable on that element.\n const variableClassName = `__variable_${family.toLowerCase().replace(/\\s+/g, \"_\")}_${id}`;\n\n if (options._selfHostedCSS) {\n // Self-hosted mode: inject local @font-face CSS instead of CDN link\n injectSelfHostedCSS(options._selfHostedCSS);\n } else {\n // CDN mode: inject <link> to Google Fonts\n const url = buildGoogleFontsUrl(family, options);\n injectFontStylesheet(url);\n\n // On SSR, collect the URL for head injection\n if (typeof document === \"undefined\") {\n if (!ssrFontUrls.includes(url)) {\n ssrFontUrls.push(url);\n }\n }\n }\n\n // Inject a CSS rule that maps className to font-family.\n // This is what makes `<div className={inter.className}>` work.\n injectClassNameRule(className, fontFamily);\n\n // Inject a CSS rule for the variable class name.\n // This is what makes `<html className={inter.variable}>` set the CSS variable.\n injectVariableClassRule(variableClassName, cssVarName, fontFamily);\n\n return {\n className,\n style: { fontFamily },\n variable: variableClassName,\n };\n };\n}\n\n// Export a Proxy that creates font loaders for any Google Font family.\n// Usage: import { Inter } from 'next/font/google'\n// The proxy intercepts property access and returns a loader for that font.\nconst googleFonts = new Proxy({} as Record<string, (options?: FontOptions) => FontResult>, {\n get(_target, prop: string) {\n if (prop === \"__esModule\") return true;\n if (prop === \"default\") return googleFonts;\n // Convert camelCase/PascalCase to proper font family name\n // e.g., \"Inter\" -> \"Inter\", \"RobotoMono\" -> \"Roboto Mono\"\n const family = prop.replace(/([a-z])([A-Z])/g, \"$1 $2\");\n return createFontLoader(family);\n },\n});\n\nexport default googleFonts;\n"]}
1
+ {"version":3,"file":"font-google-base.js","names":[],"sources":["../../src/shims/font-google-base.ts"],"sourcesContent":["/**\n * next/font/google shim\n *\n * Provides a compatible shim for Next.js Google Fonts.\n *\n * Two modes:\n * 1. **Dev / CDN mode** (default): Loads fonts from Google Fonts CDN via <link> tags.\n * 2. **Self-hosted mode** (production build): The vinext:google-fonts Vite plugin\n * fetches font CSS + .woff2 files at build time, caches them locally, and injects\n * @font-face CSS pointing at local assets. No requests to Google at runtime.\n *\n * Usage:\n * import { Inter } from 'next/font/google';\n * const inter = Inter({ subsets: ['latin'], weight: ['400', '700'] });\n * // inter.className -> unique CSS class\n * // inter.style -> { fontFamily: \"'Inter', sans-serif\" }\n * // inter.variable -> CSS variable name like '--font-inter'\n */\n\n/**\n * Escape a string for safe interpolation inside a CSS single-quoted string.\n *\n * Prevents CSS injection by escaping characters that could break out of\n * a `'...'` CSS string context: backslashes, single quotes, and newlines.\n */\nfunction escapeCSSString(value: string): string {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/'/g, \"\\\\'\")\n .replace(/\\n/g, \"\\\\a \")\n .replace(/\\r/g, \"\\\\d \");\n}\n\n/**\n * Validate a CSS custom property name (e.g. `--font-inter`).\n *\n * Custom properties must start with `--` and only contain alphanumeric\n * characters, hyphens, and underscores. Anything else could be used to\n * break out of the CSS declaration and inject arbitrary rules.\n *\n * Returns the name if valid, undefined otherwise.\n */\nfunction sanitizeCSSVarName(name: string): string | undefined {\n if (/^--[a-zA-Z0-9_-]+$/.test(name)) return name;\n return undefined;\n}\n\n/**\n * Sanitize a CSS font-family fallback name.\n *\n * Generic family names (sans-serif, serif, monospace, etc.) are used as-is.\n * Named families are wrapped in escaped quotes. This prevents injection via\n * crafted fallback values like `); } body { color: red; } .x {`.\n */\nfunction sanitizeFallback(name: string): string {\n // CSS generic font families — safe to use unquoted\n const generics = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"emoji\",\n \"math\",\n \"fangsong\",\n ]);\n const trimmed = name.trim();\n if (generics.has(trimmed)) return trimmed;\n // Wrap in single quotes with escaping to prevent CSS injection\n return `'${escapeCSSString(trimmed)}'`;\n}\n\n// Counter for generating unique class names\nlet classCounter = 0;\n\n// Track which font stylesheets have been injected (SSR + client)\nconst injectedFonts = new Set<string>();\n\nexport interface FontOptions {\n weight?: string | string[];\n style?: string | string[];\n subsets?: string[];\n display?: string;\n preload?: boolean;\n fallback?: string[];\n adjustFontFallback?: boolean | string;\n variable?: string;\n axes?: string[];\n}\n\nexport interface FontResult {\n className: string;\n style: { fontFamily: string };\n variable?: string;\n}\n\n/**\n * Convert a font family name to a CSS variable name.\n * e.g., \"Inter\" -> \"--font-inter\", \"Roboto Mono\" -> \"--font-roboto-mono\"\n */\nfunction toVarName(family: string): string {\n return \"--font-\" + family.toLowerCase().replace(/\\s+/g, \"-\");\n}\n\n/**\n * Build a Google Fonts CSS URL.\n */\nexport function buildGoogleFontsUrl(family: string, options: FontOptions): string {\n const params = new URLSearchParams();\n // Don't pre-replace spaces with \"+\". URLSearchParams handles encoding:\n // spaces become \"+\" in application/x-www-form-urlencoded format.\n // Pre-replacing would cause double-encoding: \"+\" -> \"%2B\" (400 error).\n let spec = family;\n\n // Build weight/style specs\n const weights = options.weight\n ? Array.isArray(options.weight)\n ? options.weight\n : [options.weight]\n : [];\n const styles = options.style\n ? Array.isArray(options.style)\n ? options.style\n : [options.style]\n : [];\n\n if (weights.length > 0 || styles.length > 0) {\n const hasItalic = styles.includes(\"italic\");\n if (weights.length > 0) {\n if (hasItalic) {\n // Use ital axis: ital,wght@0,400;0,700;1,400;1,700\n const pairs: string[] = [];\n for (const w of weights) {\n pairs.push(`0,${w}`);\n pairs.push(`1,${w}`);\n }\n spec += `:ital,wght@${pairs.join(\";\")}`;\n } else {\n spec += `:wght@${weights.join(\";\")}`;\n }\n }\n } else {\n // When no weight is specified, request the full variable weight range.\n // Without this, Google Fonts returns only weight 400 (the default).\n // Next.js loads the full variable font by default, so we match that\n // behavior to ensure all font weights render correctly.\n spec += `:wght@100..900`;\n }\n\n params.set(\"family\", spec);\n params.set(\"display\", options.display ?? \"swap\");\n\n return `https://fonts.googleapis.com/css2?${params.toString()}`;\n}\n\n/**\n * Inject a <link> tag for the font (client-side only).\n * On the server, we track font URLs for SSR head injection.\n */\nfunction injectFontStylesheet(url: string): void {\n if (injectedFonts.has(url)) return;\n injectedFonts.add(url);\n\n if (typeof document !== \"undefined\") {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = url;\n document.head.appendChild(link);\n }\n}\n\n/** Track which className CSS rules have been injected. */\nconst injectedClassRules = new Set<string>();\n\n/**\n * Inject a CSS rule that maps a className to a font-family.\n *\n * This is what makes `<div className={inter.className}>` apply the font.\n * Next.js generates equivalent rules at build time.\n *\n * In Next.js, the .className class ONLY sets font-family — it does NOT\n * set CSS variables. CSS variables are handled separately by the .variable class.\n */\nfunction injectClassNameRule(className: string, fontFamily: string): void {\n if (injectedClassRules.has(className)) return;\n injectedClassRules.add(className);\n\n const css = `.${className} { font-family: ${fontFamily}; }\\n`;\n\n // On server, store the CSS for SSR injection\n if (typeof document === \"undefined\") {\n ssrFontStyles.push(css);\n return;\n }\n\n // On client, inject a <style> tag\n const style = document.createElement(\"style\");\n style.textContent = css;\n style.setAttribute(\"data-vinext-font-class\", className);\n document.head.appendChild(style);\n}\n\n/** Track which variable class CSS rules have been injected. */\nconst injectedVariableRules = new Set<string>();\n\n/** Track which :root CSS variable rules have been injected. */\nconst injectedRootVariables = new Set<string>();\n\n/**\n * Inject a CSS rule that sets a CSS variable on an element.\n * This is what makes `<html className={inter.variable}>` set the CSS variable\n * that can be referenced by other styles (e.g., Tailwind's font-sans).\n *\n * In Next.js, the .variable class ONLY sets the CSS variable — it does NOT\n * set font-family. This is critical because apps commonly apply multiple\n * .variable classes to <body> (e.g., geistSans.variable + geistMono.variable).\n * If we also set font-family here, the last class wins due to CSS cascade,\n * causing all text to use that font (e.g., everything becomes monospace).\n */\nfunction injectVariableClassRule(\n variableClassName: string,\n cssVarName: string,\n fontFamily: string,\n): void {\n if (injectedVariableRules.has(variableClassName)) return;\n injectedVariableRules.add(variableClassName);\n\n // Only set the CSS variable — do NOT set font-family.\n // This matches Next.js behavior where .variable classes only define CSS variables.\n let css = `.${variableClassName} { ${cssVarName}: ${fontFamily}; }\\n`;\n\n // Also inject at :root so CSS variable inheritance works throughout the page.\n // This ensures Tailwind utilities like `font-sans` that reference these\n // variables via var(--font-geist-sans) work correctly.\n if (!injectedRootVariables.has(cssVarName)) {\n injectedRootVariables.add(cssVarName);\n css += `:root { ${cssVarName}: ${fontFamily}; }\\n`;\n }\n\n // On server, store the CSS for SSR injection\n if (typeof document === \"undefined\") {\n ssrFontStyles.push(css);\n return;\n }\n\n // On client, inject a <style> tag\n const style = document.createElement(\"style\");\n style.textContent = css;\n style.setAttribute(\"data-vinext-font-variable\", variableClassName);\n document.head.appendChild(style);\n}\n\n// SSR: collect font class CSS for injection in <head>\nconst ssrFontStyles: string[] = [];\n\n/**\n * Get collected SSR font class styles (used by the renderer).\n * Note: We don't clear the arrays because fonts are loaded at module import\n * time and need to persist across all requests in the Workers environment.\n */\nexport function getSSRFontStyles(): string[] {\n return [...ssrFontStyles];\n}\n\n// SSR: collect font URLs to inject in <head>\nconst ssrFontUrls: string[] = [];\n\n/**\n * Get collected SSR font URLs (used by the renderer).\n * Note: We don't clear the arrays because fonts are loaded at module import\n * time and need to persist across all requests in the Workers environment.\n */\nexport function getSSRFontLinks(): string[] {\n return [...ssrFontUrls];\n}\n\n// SSR: collect font file URLs for <link rel=\"preload\"> injection (self-hosted Google fonts)\nconst ssrFontPreloads: Array<{ href: string; type: string }> = [];\nconst ssrFontPreloadHrefs = new Set<string>();\n\n/**\n * Get collected SSR font preload data (used by the renderer).\n * Returns an array of { href, type } objects for emitting\n * <link rel=\"preload\" as=\"font\" ...> tags.\n */\nexport function getSSRFontPreloads(): Array<{ href: string; type: string }> {\n return [...ssrFontPreloads];\n}\n\n/**\n * Determine the MIME type for a font file based on its extension.\n */\nfunction getFontMimeType(pathOrUrl: string): string {\n if (pathOrUrl.endsWith(\".woff2\")) return \"font/woff2\";\n if (pathOrUrl.endsWith(\".woff\")) return \"font/woff\";\n if (pathOrUrl.endsWith(\".ttf\")) return \"font/ttf\";\n if (pathOrUrl.endsWith(\".otf\")) return \"font/opentype\";\n return \"font/woff2\";\n}\n\n/**\n * Extract font file URLs from @font-face CSS rules.\n * Parses url('...') references from the CSS text.\n */\nfunction extractFontUrlsFromCSS(css: string): string[] {\n const urls: string[] = [];\n const urlRegex = /url\\(['\"]?([^'\")]+)['\"]?\\)/g;\n let match: RegExpExecArray | null;\n while ((match = urlRegex.exec(css)) !== null) {\n const url = match[1];\n // Only collect absolute paths (starting with /) — these are self-hosted font files\n if (url && url.startsWith(\"/\")) {\n urls.push(url);\n }\n }\n return urls;\n}\n\n/**\n * Collect font file URLs from self-hosted CSS for preload link generation.\n * Only collects on the server (SSR). Deduplicates by href using a Set for O(1) lookups.\n */\nfunction collectFontPreloadsFromCSS(css: string): void {\n if (typeof document !== \"undefined\") return; // client-side, skip\n\n const urls = extractFontUrlsFromCSS(css);\n for (const href of urls) {\n if (!ssrFontPreloadHrefs.has(href)) {\n ssrFontPreloadHrefs.add(href);\n ssrFontPreloads.push({ href, type: getFontMimeType(href) });\n }\n }\n}\n\n/** Track injected self-hosted @font-face blocks (deduplicate) */\nconst injectedSelfHosted = new Set<string>();\n\n/**\n * Inject self-hosted @font-face CSS (from the build plugin).\n * This replaces the CDN <link> tag with inline CSS.\n */\nfunction injectSelfHostedCSS(css: string): void {\n if (injectedSelfHosted.has(css)) return;\n injectedSelfHosted.add(css);\n\n // Extract font file URLs for preload hints (SSR only)\n collectFontPreloadsFromCSS(css);\n\n if (typeof document === \"undefined\") {\n // SSR: add to collected styles\n ssrFontStyles.push(css);\n return;\n }\n\n // Client: inject <style> tag\n const style = document.createElement(\"style\");\n style.textContent = css;\n style.setAttribute(\"data-vinext-font-selfhosted\", \"true\");\n document.head.appendChild(style);\n}\n\nexport type FontLoader = (options?: FontOptions & { _selfHostedCSS?: string }) => FontResult;\n\nexport function createFontLoader(family: string): FontLoader {\n return function fontLoader(options: FontOptions & { _selfHostedCSS?: string } = {}): FontResult {\n const id = classCounter++;\n const className = `__font_${family.toLowerCase().replace(/\\s+/g, \"_\")}_${id}`;\n const fallback = options.fallback ?? [\"sans-serif\"];\n // Sanitize each fallback name to prevent CSS injection via crafted values\n const fontFamily = `'${escapeCSSString(family)}', ${fallback.map(sanitizeFallback).join(\", \")}`;\n // Validate CSS variable name — reject anything that could inject CSS.\n // Fall back to auto-generated name if invalid.\n const defaultVarName = toVarName(family);\n const cssVarName = options.variable\n ? (sanitizeCSSVarName(options.variable) ?? defaultVarName)\n : defaultVarName;\n // In Next.js, `variable` returns a CLASS NAME that sets the CSS variable.\n // Users apply this class to set the CSS variable on that element.\n const variableClassName = `__variable_${family.toLowerCase().replace(/\\s+/g, \"_\")}_${id}`;\n\n if (options._selfHostedCSS) {\n // Self-hosted mode: inject local @font-face CSS instead of CDN link\n injectSelfHostedCSS(options._selfHostedCSS);\n } else {\n // CDN mode: inject <link> to Google Fonts\n const url = buildGoogleFontsUrl(family, options);\n injectFontStylesheet(url);\n\n // On SSR, collect the URL for head injection\n if (typeof document === \"undefined\") {\n if (!ssrFontUrls.includes(url)) {\n ssrFontUrls.push(url);\n }\n }\n }\n\n // Inject a CSS rule that maps className to font-family.\n // This is what makes `<div className={inter.className}>` work.\n injectClassNameRule(className, fontFamily);\n\n // Inject a CSS rule for the variable class name.\n // This is what makes `<html className={inter.variable}>` set the CSS variable.\n injectVariableClassRule(variableClassName, cssVarName, fontFamily);\n\n return {\n className,\n style: { fontFamily },\n variable: variableClassName,\n };\n };\n}\n\n// Export a Proxy that creates font loaders for any Google Font family.\n// Usage: import { Inter } from 'next/font/google'\n// The proxy intercepts property access and returns a loader for that font.\nconst googleFonts = new Proxy({} as Record<string, (options?: FontOptions) => FontResult>, {\n get(_target, prop: string) {\n if (prop === \"__esModule\") return true;\n if (prop === \"default\") return googleFonts;\n // Convert camelCase/PascalCase to proper font family name\n // e.g., \"Inter\" -> \"Inter\", \"RobotoMono\" -> \"Roboto Mono\"\n const family = prop.replace(/([a-z])([A-Z])/g, \"$1 $2\");\n return createFontLoader(family);\n },\n});\n\nexport default googleFonts;\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export { default, buildGoogleFontsUrl, getSSRFontLinks, getSSRFontStyles, getSSRFontPreloads, } from "./font-google-base";
2
- export * from "./font-google.generated";
3
- //# sourceMappingURL=font-google.d.ts.map
1
+ import googleFonts, { buildGoogleFontsUrl, getSSRFontLinks, getSSRFontPreloads, getSSRFontStyles } from "./font-google-base.js";
2
+ import { ABeeZee, ADLaM_Display, AR_One_Sans, Abel, Abhaya_Libre, Aboreto, Abril_Fatface, Abyssinica_SIL, Aclonica, Acme, Actor, Adamina, Advent_Pro, Afacad, Afacad_Flux, Agbalumo, Agdasima, Agu_Display, Aguafina_Script, Akatab, Akaya_Kanadaka, Akaya_Telivigala, Akronim, Akshar, Aladin, Alan_Sans, Alata, Alatsi, Albert_Sans, Aldrich, Alef, Alegreya, Alegreya_SC, Alegreya_Sans, Alegreya_Sans_SC, Aleo, Alex_Brush, Alexandria, Alfa_Slab_One, Alice, Alike, Alike_Angular, Alkalami, Alkatra, Allan, Allerta, Allerta_Stencil, Allison, Allkin, Allura, Almarai, Almendra, Almendra_Display, Almendra_SC, Alumni_Sans, Alumni_Sans_Collegiate_One, Alumni_Sans_Inline_One, Alumni_Sans_Pinstripe, Alumni_Sans_SC, Alyamama, Amarante, Amaranth, Amarna, Amatic_SC, Amethysta, Amiko, Amiri, Amiri_Quran, Amita, Anaheim, Ancizar_Sans, Ancizar_Serif, Andada_Pro, Andika, Anek_Bangla, Anek_Devanagari, Anek_Gujarati, Anek_Gurmukhi, Anek_Kannada, Anek_Latin, Anek_Malayalam, Anek_Odia, Anek_Tamil, Anek_Telugu, Angkor, Annapurna_SIL, Annie_Use_Your_Telescope, Anonymous_Pro, Anta, Antic, Antic_Didone, Antic_Slab, Anton, Anton_SC, Antonio, Anuphan, Anybody, Aoboshi_One, Arapey, Arbutus, Arbutus_Slab, Architects_Daughter, Archivo, Archivo_Black, Archivo_Narrow, Are_You_Serious, Aref_Ruqaa, Aref_Ruqaa_Ink, Arima, Arimo, Arizonia, Armata, Arsenal, Arsenal_SC, Artifika, Arvo, Arya, Asap, Asap_Condensed, Asar, Asimovian, Asset, Assistant, Asta_Sans, Astloch, Asul, Athiti, Atkinson_Hyperlegible, Atkinson_Hyperlegible_Mono, Atkinson_Hyperlegible_Next, Atma, Atomic_Age, Aubrey, Audiowide, Autour_One, Average, Average_Sans, Averia_Gruesa_Libre, Averia_Libre, Averia_Sans_Libre, Averia_Serif_Libre, Azeret_Mono, B612, B612_Mono, BBH_Bartle, BBH_Bogle, BBH_Hegarty, BIZ_UDGothic, BIZ_UDMincho, BIZ_UDPGothic, BIZ_UDPMincho, Babylonica, Bacasime_Antique, Bad_Script, Badeen_Display, Bagel_Fat_One, Bahiana, Bahianita, Bai_Jamjuree, Bakbak_One, Ballet, Baloo_2, Baloo_Bhai_2, Baloo_Bhaijaan_2, Baloo_Bhaina_2, Baloo_Chettan_2, Baloo_Da_2, Baloo_Paaji_2, Baloo_Tamma_2, Baloo_Tammudu_2, Baloo_Thambi_2, Balsamiq_Sans, Balthazar, Bangers, Barlow, Barlow_Condensed, Barlow_Semi_Condensed, Barriecito, Barrio, Basic, Baskervville, Baskervville_SC, Battambang, Baumans, Bayon, Be_Vietnam_Pro, Beau_Rivage, Bebas_Neue, Beiruti, Belanosima, Belgrano, Bellefair, Belleza, Bellota, Bellota_Text, BenchNine, Benne, Bentham, Berkshire_Swash, Besley, Betania_Patmos, Betania_Patmos_GDL, Betania_Patmos_In, Betania_Patmos_In_GDL, Beth_Ellen, Bevan, BhuTuka_Expanded_One, Big_Shoulders, Big_Shoulders_Inline, Big_Shoulders_Stencil, Bigelow_Rules, Bigshot_One, Bilbo, Bilbo_Swash_Caps, BioRhyme, BioRhyme_Expanded, Birthstone, Birthstone_Bounce, Biryani, Bitcount, Bitcount_Grid_Double, Bitcount_Grid_Double_Ink, Bitcount_Grid_Single, Bitcount_Grid_Single_Ink, Bitcount_Ink, Bitcount_Prop_Double, Bitcount_Prop_Double_Ink, Bitcount_Prop_Single, Bitcount_Prop_Single_Ink, Bitcount_Single, Bitcount_Single_Ink, Bitter, Black_And_White_Picture, Black_Han_Sans, Black_Ops_One, Blaka, Blaka_Hollow, Blaka_Ink, Blinker, Bodoni_Moda, Bodoni_Moda_SC, Bokor, Boldonse, Bona_Nova, Bona_Nova_SC, Bonbon, Bonheur_Royale, Boogaloo, Borel, Bowlby_One, Bowlby_One_SC, Bpmf_Huninn, Bpmf_Iansui, Bpmf_Zihi_Kai_Std, Braah_One, Brawler, Bree_Serif, Bricolage_Grotesque, Bruno_Ace, Bruno_Ace_SC, Brygada_1918, Bubblegum_Sans, Bubbler_One, Buda, Buenard, Bungee, Bungee_Hairline, Bungee_Inline, Bungee_Outline, Bungee_Shade, Bungee_Spice, Bungee_Tint, Butcherman, Butterfly_Kids, Bytesized, Cabin, Cabin_Condensed, Cabin_Sketch, Cactus_Classical_Serif, Caesar_Dressing, Cagliostro, Cairo, Cairo_Play, Cal_Sans, Caladea, Calistoga, Calligraffitti, Cambay, Cambo, Candal, Cantarell, Cantata_One, Cantora_One, Caprasimo, Capriola, Caramel, Carattere, Cardo, Carlito, Carme, Carrois_Gothic, Carrois_Gothic_SC, Carter_One, Cascadia_Code, Cascadia_Mono, Castoro, Castoro_Titling, Catamaran, Caudex, Cause, Caveat, Caveat_Brush, Cedarville_Cursive, Ceviche_One, Chakra_Petch, Changa, Changa_One, Chango, Charis_SIL, Charm, Charmonman, Chathura, Chau_Philomene_One, Chela_One, Chelsea_Market, Chenla, Cherish, Cherry_Bomb_One, Cherry_Cream_Soda, Cherry_Swash, Chewy, Chicle, Chilanka, Chiron_GoRound_TC, Chiron_Hei_HK, Chiron_Sung_HK, Chivo, Chivo_Mono, Chocolate_Classical_Sans, Chokokutai, Chonburi, Cinzel, Cinzel_Decorative, Clicker_Script, Climate_Crisis, Coda, Codystar, Coiny, Combo, Comfortaa, Comforter, Comforter_Brush, Comic_Neue, Comic_Relief, Coming_Soon, Comme, Commissioner, Concert_One, Condiment, Content, Contrail_One, Convergence, Cookie, Copse, Coral_Pixels, Corben, Corinthia, Cormorant, Cormorant_Garamond, Cormorant_Infant, Cormorant_SC, Cormorant_Unicase, Cormorant_Upright, Cossette_Texte, Cossette_Titre, Courgette, Courier_Prime, Cousine, Coustard, Covered_By_Your_Grace, Crafty_Girls, Creepster, Crete_Round, Crimson_Pro, Crimson_Text, Croissant_One, Crushed, Cuprum, Cute_Font, Cutive, Cutive_Mono, DM_Mono, DM_Sans, DM_Serif_Display, DM_Serif_Text, Dai_Banna_SIL, Damion, Dancing_Script, Danfo, Dangrek, Darker_Grotesque, Darumadrop_One, David_Libre, Dawning_of_a_New_Day, Days_One, Dekko, Dela_Gothic_One, Delicious_Handrawn, Delius, Delius_Swash_Caps, Delius_Unicase, Della_Respira, Denk_One, Devonshire, Dhurjati, Didact_Gothic, Diphylleia, Diplomata, Diplomata_SC, Do_Hyeon, Dokdo, Domine, Donegal_One, Dongle, Doppio_One, Dorsa, Dosis, DotGothic16, Doto, Dr_Sugiyama, Duru_Sans, DynaPuff, Dynalight, EB_Garamond, Eagle_Lake, East_Sea_Dokdo, Eater, Economica, Eczar, Edu_AU_VIC_WA_NT_Arrows, Edu_AU_VIC_WA_NT_Dots, Edu_AU_VIC_WA_NT_Guides, Edu_AU_VIC_WA_NT_Hand, Edu_AU_VIC_WA_NT_Pre, Edu_NSW_ACT_Cursive, Edu_NSW_ACT_Foundation, Edu_NSW_ACT_Hand_Pre, Edu_QLD_Beginner, Edu_QLD_Hand, Edu_SA_Beginner, Edu_SA_Hand, Edu_TAS_Beginner, Edu_VIC_WA_NT_Beginner, Edu_VIC_WA_NT_Hand, Edu_VIC_WA_NT_Hand_Pre, El_Messiri, Electrolize, Elms_Sans, Elsie, Elsie_Swash_Caps, Emblema_One, Emilys_Candy, Encode_Sans, Encode_Sans_Condensed, Encode_Sans_Expanded, Encode_Sans_SC, Encode_Sans_Semi_Condensed, Encode_Sans_Semi_Expanded, Engagement, Englebert, Enriqueta, Ephesis, Epilogue, Epunda_Sans, Epunda_Slab, Erica_One, Esteban, Estonia, Euphoria_Script, Ewert, Exile, Exo, Exo_2, Expletus_Sans, Explora, Faculty_Glyphic, Fahkwang, Familjen_Grotesk, Fanwood_Text, Farro, Farsan, Fascinate, Fascinate_Inline, Faster_One, Fasthand, Fauna_One, Faustina, Federant, Federo, Felipa, Fenix, Festive, Figtree, Finger_Paint, Finlandica, Fira_Code, Fira_Mono, Fira_Sans, Fira_Sans_Condensed, Fira_Sans_Extra_Condensed, Fjalla_One, Fjord_One, Flamenco, Flavors, Fleur_De_Leah, Flow_Block, Flow_Circular, Flow_Rounded, Foldit, Fondamento, Fontdiner_Swanky, Forum, Fragment_Mono, Francois_One, Frank_Ruhl_Libre, Fraunces, Freckle_Face, Fredericka_the_Great, Fredoka, Freehand, Freeman, Fresca, Frijole, Fruktur, Fugaz_One, Fuggles, Funnel_Display, Funnel_Sans, Fustat, Fuzzy_Bubbles, GFS_Didot, GFS_Neohellenic, Ga_Maamli, Gabarito, Gabriela, Gaegu, Gafata, Gajraj_One, Galada, Galdeano, Galindo, Gamja_Flower, Gantari, Gasoek_One, Gayathri, Geist, Geist_Mono, Gelasio, Gemunu_Libre, Genos, Gentium_Book_Plus, Gentium_Plus, Geo, Geologica, Geom, Georama, Geostar, Geostar_Fill, Germania_One, Gideon_Roman, Gidole, Gidugu, Gilda_Display, Girassol, Give_You_Glory, Glass_Antiqua, Glegoo, Gloock, Gloria_Hallelujah, Glory, Gluten, Goblin_One, Gochi_Hand, Goldman, Golos_Text, Google_Sans, Google_Sans_Code, Google_Sans_Flex, Gorditas, Gothic_A1, Gotu, Goudy_Bookletter_1911, Gowun_Batang, Gowun_Dodum, Graduate, Grand_Hotel, Grandiflora_One, Grandstander, Grape_Nuts, Gravitas_One, Great_Vibes, Grechen_Fuemen, Grenze, Grenze_Gotisch, Grey_Qo, Griffy, Gruppo, Gudea, Gugi, Gulzar, Gupter, Gurajada, Gveret_Levin, Gwendolyn, Habibi, Hachi_Maru_Pop, Hahmlet, Halant, Hammersmith_One, Hanalei, Hanalei_Fill, Handjet, Handlee, Hanken_Grotesk, Hanuman, Happy_Monkey, Harmattan, Headland_One, Hedvig_Letters_Sans, Hedvig_Letters_Serif, Heebo, Henny_Penny, Hepta_Slab, Herr_Von_Muellerhoff, Hi_Melody, Hina_Mincho, Hind, Hind_Guntur, Hind_Madurai, Hind_Mysuru, Hind_Siliguri, Hind_Vadodara, Holtwood_One_SC, Homemade_Apple, Homenaje, Honk, Host_Grotesk, Hubballi, Hubot_Sans, Huninn, Hurricane, IBM_Plex_Mono, IBM_Plex_Sans, IBM_Plex_Sans_Arabic, IBM_Plex_Sans_Condensed, IBM_Plex_Sans_Devanagari, IBM_Plex_Sans_Hebrew, IBM_Plex_Sans_JP, IBM_Plex_Sans_KR, IBM_Plex_Sans_Thai, IBM_Plex_Sans_Thai_Looped, IBM_Plex_Serif, IM_Fell_DW_Pica, IM_Fell_DW_Pica_SC, IM_Fell_Double_Pica, IM_Fell_Double_Pica_SC, IM_Fell_English, IM_Fell_English_SC, IM_Fell_French_Canon, IM_Fell_French_Canon_SC, IM_Fell_Great_Primer, IM_Fell_Great_Primer_SC, Iansui, Ibarra_Real_Nova, Iceberg, Iceland, Idiqlat, Imbue, Imperial_Script, Imprima, Inclusive_Sans, Inconsolata, Inder, Indie_Flower, Ingrid_Darling, Inika, Inknut_Antiqua, Inria_Sans, Inria_Serif, Inspiration, Instrument_Sans, Instrument_Serif, Intel_One_Mono, Inter, Inter_Tight, Irish_Grover, Island_Moments, Istok_Web, Italiana, Italianno, Itim, Jacquard_12, Jacquard_12_Charted, Jacquard_24, Jacquard_24_Charted, Jacquarda_Bastarda_9, Jacquarda_Bastarda_9_Charted, Jacques_Francois, Jacques_Francois_Shadow, Jaini, Jaini_Purva, Jaldi, Jaro, Jersey_10, Jersey_10_Charted, Jersey_15, Jersey_15_Charted, Jersey_20, Jersey_20_Charted, Jersey_25, Jersey_25_Charted, JetBrains_Mono, Jim_Nightshade, Joan, Jockey_One, Jolly_Lodger, Jomhuria, Jomolhari, Josefin_Sans, Josefin_Slab, Jost, Joti_One, Jua, Judson, Julee, Julius_Sans_One, Junge, Jura, Just_Another_Hand, Just_Me_Again_Down_Here, K2D, Kablammo, Kadwa, Kaisei_Decol, Kaisei_HarunoUmi, Kaisei_Opti, Kaisei_Tokumin, Kalam, Kalnia, Kalnia_Glaze, Kameron, Kanchenjunga, Kanit, Kantumruy_Pro, Kapakana, Karantina, Karla, Karla_Tamil_Inclined, Karla_Tamil_Upright, Karma, Katibeh, Kaushan_Script, Kavivanar, Kavoon, Kay_Pho_Du, Kdam_Thmor_Pro, Keania_One, Kedebideri, Kelly_Slab, Kenia, Khand, Khmer, Khula, Kings, Kirang_Haerang, Kite_One, Kiwi_Maru, Klee_One, Knewave, KoHo, Kodchasan, Kode_Mono, Koh_Santepheap, Kolker_Brush, Konkhmer_Sleokchher, Kosugi, Kosugi_Maru, Kotta_One, Koulen, Kranky, Kreon, Kristi, Krona_One, Krub, Kufam, Kulim_Park, Kumar_One, Kumar_One_Outline, Kumbh_Sans, Kurale, LINE_Seed_JP, LXGW_Marker_Gothic, LXGW_WenKai_Mono_TC, LXGW_WenKai_TC, La_Belle_Aurore, Labrada, Lacquer, Laila, Lakki_Reddy, Lalezar, Lancelot, Langar, Lateef, Lato, Lavishly_Yours, League_Gothic, League_Script, League_Spartan, Leckerli_One, Ledger, Lekton, Lemon, Lemonada, Lexend, Lexend_Deca, Lexend_Exa, Lexend_Giga, Lexend_Mega, Lexend_Peta, Lexend_Tera, Lexend_Zetta, Libertinus_Keyboard, Libertinus_Math, Libertinus_Mono, Libertinus_Sans, Libertinus_Serif, Libertinus_Serif_Display, Libre_Barcode_128, Libre_Barcode_128_Text, Libre_Barcode_39, Libre_Barcode_39_Extended, Libre_Barcode_39_Extended_Text, Libre_Barcode_39_Text, Libre_Barcode_EAN13_Text, Libre_Baskerville, Libre_Bodoni, Libre_Caslon_Display, Libre_Caslon_Text, Libre_Franklin, Licorice, Life_Savers, Lilex, Lilita_One, Lily_Script_One, Limelight, Linden_Hill, Linefont, Lisu_Bosa, Liter, Literata, Liu_Jian_Mao_Cao, Livvic, Lobster, Lobster_Two, Londrina_Outline, Londrina_Shadow, Londrina_Sketch, Londrina_Solid, Long_Cang, Lora, Love_Light, Love_Ya_Like_A_Sister, Loved_by_the_King, Lovers_Quarrel, Luckiest_Guy, Lugrasimo, Lumanosimo, Lunasima, Lusitana, Lustria, Luxurious_Roman, Luxurious_Script, M_PLUS_1, M_PLUS_1_Code, M_PLUS_1p, M_PLUS_2, M_PLUS_Code_Latin, M_PLUS_Rounded_1c, Ma_Shan_Zheng, Macondo, Macondo_Swash_Caps, Mada, Madimi_One, Magra, Maiden_Orange, Maitree, Major_Mono_Display, Mako, Mali, Mallanna, Maname, Mandali, Manjari, Manrope, Mansalva, Manuale, Manufacturing_Consent, Marcellus, Marcellus_SC, Marck_Script, Margarine, Marhey, Markazi_Text, Marko_One, Marmelad, Martel, Martel_Sans, Martian_Mono, Marvel, Matangi, Mate, Mate_SC, Matemasie, Maven_Pro, McLaren, Mea_Culpa, Meddon, MedievalSharp, Medula_One, Meera_Inimai, Megrim, Meie_Script, Menbere, Meow_Script, Merienda, Merriweather, Merriweather_Sans, Metal, Metal_Mania, Metamorphous, Metrophobic, Michroma, Micro_5, Micro_5_Charted, Milonga, Miltonian, Miltonian_Tattoo, Mina, Mingzat, Miniver, Miriam_Libre, Mirza, Miss_Fajardose, Mitr, Mochiy_Pop_One, Mochiy_Pop_P_One, Modak, Modern_Antiqua, Moderustic, Mogra, Mohave, Moirai_One, Molengo, Molle, Momo_Signature, Momo_Trust_Display, Momo_Trust_Sans, Mona_Sans, Monda, Monofett, Monomakh, Monomaniac_One, Monoton, Monsieur_La_Doulaise, Montaga, Montagu_Slab, MonteCarlo, Montez, Montserrat, Montserrat_Alternates, Montserrat_Underline, Moo_Lah_Lah, Mooli, Moon_Dance, Moul, Moulpali, Mountains_of_Christmas, Mouse_Memoirs, Mozilla_Headline, Mozilla_Text, Mr_Bedfort, Mr_Dafoe, Mr_De_Haviland, Mrs_Saint_Delafield, Mrs_Sheppards, Ms_Madi, Mukta, Mukta_Mahee, Mukta_Malar, Mukta_Vaani, Mulish, Murecho, MuseoModerno, My_Soul, Mynerve, Mystery_Quest, NTR, Nabla, Namdhinggo, Nanum_Brush_Script, Nanum_Gothic, Nanum_Gothic_Coding, Nanum_Myeongjo, Nanum_Pen_Script, Narnoor, Nata_Sans, National_Park, Neonderthaw, Nerko_One, Neucha, Neuton, New_Amsterdam, New_Rocker, New_Tegomin, News_Cycle, Newsreader, Niconne, Niramit, Nixie_One, Nobile, Nokora, Norican, Nosifer, Notable, Nothing_You_Could_Do, Noticia_Text, Noto_Color_Emoji, Noto_Emoji, Noto_Kufi_Arabic, Noto_Music, Noto_Naskh_Arabic, Noto_Nastaliq_Urdu, Noto_Rashi_Hebrew, Noto_Sans, Noto_Sans_Adlam, Noto_Sans_Adlam_Unjoined, Noto_Sans_Anatolian_Hieroglyphs, Noto_Sans_Arabic, Noto_Sans_Armenian, Noto_Sans_Avestan, Noto_Sans_Balinese, Noto_Sans_Bamum, Noto_Sans_Bassa_Vah, Noto_Sans_Batak, Noto_Sans_Bengali, Noto_Sans_Bhaiksuki, Noto_Sans_Brahmi, Noto_Sans_Buginese, Noto_Sans_Buhid, Noto_Sans_Canadian_Aboriginal, Noto_Sans_Carian, Noto_Sans_Caucasian_Albanian, Noto_Sans_Chakma, Noto_Sans_Cham, Noto_Sans_Cherokee, Noto_Sans_Chorasmian, Noto_Sans_Coptic, Noto_Sans_Cuneiform, Noto_Sans_Cypriot, Noto_Sans_Cypro_Minoan, Noto_Sans_Deseret, Noto_Sans_Devanagari, Noto_Sans_Display, Noto_Sans_Duployan, Noto_Sans_Egyptian_Hieroglyphs, Noto_Sans_Elbasan, Noto_Sans_Elymaic, Noto_Sans_Ethiopic, Noto_Sans_Georgian, Noto_Sans_Glagolitic, Noto_Sans_Gothic, Noto_Sans_Grantha, Noto_Sans_Gujarati, Noto_Sans_Gunjala_Gondi, Noto_Sans_Gurmukhi, Noto_Sans_HK, Noto_Sans_Hanifi_Rohingya, Noto_Sans_Hanunoo, Noto_Sans_Hatran, Noto_Sans_Hebrew, Noto_Sans_Imperial_Aramaic, Noto_Sans_Indic_Siyaq_Numbers, Noto_Sans_Inscriptional_Pahlavi, Noto_Sans_Inscriptional_Parthian, Noto_Sans_JP, Noto_Sans_Javanese, Noto_Sans_KR, Noto_Sans_Kaithi, Noto_Sans_Kannada, Noto_Sans_Kawi, Noto_Sans_Kayah_Li, Noto_Sans_Kharoshthi, Noto_Sans_Khmer, Noto_Sans_Khojki, Noto_Sans_Khudawadi, Noto_Sans_Lao, Noto_Sans_Lao_Looped, Noto_Sans_Lepcha, Noto_Sans_Limbu, Noto_Sans_Linear_A, Noto_Sans_Linear_B, Noto_Sans_Lisu, Noto_Sans_Lycian, Noto_Sans_Lydian, Noto_Sans_Mahajani, Noto_Sans_Malayalam, Noto_Sans_Mandaic, Noto_Sans_Manichaean, Noto_Sans_Marchen, Noto_Sans_Masaram_Gondi, Noto_Sans_Math, Noto_Sans_Mayan_Numerals, Noto_Sans_Medefaidrin, Noto_Sans_Meetei_Mayek, Noto_Sans_Mende_Kikakui, Noto_Sans_Meroitic, Noto_Sans_Miao, Noto_Sans_Modi, Noto_Sans_Mongolian, Noto_Sans_Mono, Noto_Sans_Mro, Noto_Sans_Multani, Noto_Sans_Myanmar, Noto_Sans_NKo, Noto_Sans_NKo_Unjoined, Noto_Sans_Nabataean, Noto_Sans_Nag_Mundari, Noto_Sans_Nandinagari, Noto_Sans_New_Tai_Lue, Noto_Sans_Newa, Noto_Sans_Nushu, Noto_Sans_Ogham, Noto_Sans_Ol_Chiki, Noto_Sans_Old_Hungarian, Noto_Sans_Old_Italic, Noto_Sans_Old_North_Arabian, Noto_Sans_Old_Permic, Noto_Sans_Old_Persian, Noto_Sans_Old_Sogdian, Noto_Sans_Old_South_Arabian, Noto_Sans_Old_Turkic, Noto_Sans_Oriya, Noto_Sans_Osage, Noto_Sans_Osmanya, Noto_Sans_Pahawh_Hmong, Noto_Sans_Palmyrene, Noto_Sans_Pau_Cin_Hau, Noto_Sans_PhagsPa, Noto_Sans_Phoenician, Noto_Sans_Psalter_Pahlavi, Noto_Sans_Rejang, Noto_Sans_Runic, Noto_Sans_SC, Noto_Sans_Samaritan, Noto_Sans_Saurashtra, Noto_Sans_Sharada, Noto_Sans_Shavian, Noto_Sans_Siddham, Noto_Sans_SignWriting, Noto_Sans_Sinhala, Noto_Sans_Sogdian, Noto_Sans_Sora_Sompeng, Noto_Sans_Soyombo, Noto_Sans_Sundanese, Noto_Sans_Sunuwar, Noto_Sans_Syloti_Nagri, Noto_Sans_Symbols, Noto_Sans_Symbols_2, Noto_Sans_Syriac, Noto_Sans_Syriac_Eastern, Noto_Sans_Syriac_Western, Noto_Sans_TC, Noto_Sans_Tagalog, Noto_Sans_Tagbanwa, Noto_Sans_Tai_Le, Noto_Sans_Tai_Tham, Noto_Sans_Tai_Viet, Noto_Sans_Takri, Noto_Sans_Tamil, Noto_Sans_Tamil_Supplement, Noto_Sans_Tangsa, Noto_Sans_Telugu, Noto_Sans_Thaana, Noto_Sans_Thai, Noto_Sans_Thai_Looped, Noto_Sans_Tifinagh, Noto_Sans_Tirhuta, Noto_Sans_Ugaritic, Noto_Sans_Vai, Noto_Sans_Vithkuqi, Noto_Sans_Wancho, Noto_Sans_Warang_Citi, Noto_Sans_Yi, Noto_Sans_Zanabazar_Square, Noto_Serif, Noto_Serif_Ahom, Noto_Serif_Armenian, Noto_Serif_Balinese, Noto_Serif_Bengali, Noto_Serif_Devanagari, Noto_Serif_Display, Noto_Serif_Dives_Akuru, Noto_Serif_Dogra, Noto_Serif_Ethiopic, Noto_Serif_Georgian, Noto_Serif_Grantha, Noto_Serif_Gujarati, Noto_Serif_Gurmukhi, Noto_Serif_HK, Noto_Serif_Hebrew, Noto_Serif_Hentaigana, Noto_Serif_JP, Noto_Serif_KR, Noto_Serif_Kannada, Noto_Serif_Khitan_Small_Script, Noto_Serif_Khmer, Noto_Serif_Khojki, Noto_Serif_Lao, Noto_Serif_Makasar, Noto_Serif_Malayalam, Noto_Serif_Myanmar, Noto_Serif_NP_Hmong, Noto_Serif_Old_Uyghur, Noto_Serif_Oriya, Noto_Serif_Ottoman_Siyaq, Noto_Serif_SC, Noto_Serif_Sinhala, Noto_Serif_TC, Noto_Serif_Tamil, Noto_Serif_Tangut, Noto_Serif_Telugu, Noto_Serif_Thai, Noto_Serif_Tibetan, Noto_Serif_Todhri, Noto_Serif_Toto, Noto_Serif_Vithkuqi, Noto_Serif_Yezidi, Noto_Traditional_Nushu, Noto_Znamenny_Musical_Notation, Nova_Cut, Nova_Flat, Nova_Mono, Nova_Oval, Nova_Round, Nova_Script, Nova_Slim, Nova_Square, Numans, Nunito, Nunito_Sans, Nuosu_SIL, Odibee_Sans, Odor_Mean_Chey, Offside, Oi, Ojuju, Old_Standard_TT, Oldenburg, Ole, Oleo_Script, Oleo_Script_Swash_Caps, Onest, Oooh_Baby, Open_Sans, Oranienbaum, Orbit, Orbitron, Oregano, Orelega_One, Orienta, Original_Surfer, Oswald, Outfit, Over_the_Rainbow, Overlock, Overlock_SC, Overpass, Overpass_Mono, Ovo, Oxanium, Oxygen, Oxygen_Mono, PT_Mono, PT_Sans, PT_Sans_Caption, PT_Sans_Narrow, PT_Serif, PT_Serif_Caption, Pacifico, Padauk, Padyakke_Expanded_One, Palanquin, Palanquin_Dark, Palette_Mosaic, Pangolin, Paprika, Parastoo, Parisienne, Parkinsans, Passero_One, Passion_One, Passions_Conflict, Pathway_Extreme, Pathway_Gothic_One, Patrick_Hand, Patrick_Hand_SC, Pattaya, Patua_One, Pavanam, Paytone_One, Peddana, Peralta, Permanent_Marker, Petemoss, Petit_Formal_Script, Petrona, Phetsarath, Philosopher, Phudu, Piazzolla, Piedra, Pinyon_Script, Pirata_One, Pixelify_Sans, Plaster, Platypi, Play, Playball, Playfair, Playfair_Display, Playfair_Display_SC, Playpen_Sans, Playpen_Sans_Arabic, Playpen_Sans_Deva, Playpen_Sans_Hebrew, Playpen_Sans_Thai, Playwrite_AR, Playwrite_AR_Guides, Playwrite_AT, Playwrite_AT_Guides, Playwrite_AU_NSW, Playwrite_AU_NSW_Guides, Playwrite_AU_QLD, Playwrite_AU_QLD_Guides, Playwrite_AU_SA, Playwrite_AU_SA_Guides, Playwrite_AU_TAS, Playwrite_AU_TAS_Guides, Playwrite_AU_VIC, Playwrite_AU_VIC_Guides, Playwrite_BE_VLG, Playwrite_BE_VLG_Guides, Playwrite_BE_WAL, Playwrite_BE_WAL_Guides, Playwrite_BR, Playwrite_BR_Guides, Playwrite_CA, Playwrite_CA_Guides, Playwrite_CL, Playwrite_CL_Guides, Playwrite_CO, Playwrite_CO_Guides, Playwrite_CU, Playwrite_CU_Guides, Playwrite_CZ, Playwrite_CZ_Guides, Playwrite_DE_Grund, Playwrite_DE_Grund_Guides, Playwrite_DE_LA, Playwrite_DE_LA_Guides, Playwrite_DE_SAS, Playwrite_DE_SAS_Guides, Playwrite_DE_VA, Playwrite_DE_VA_Guides, Playwrite_DK_Loopet, Playwrite_DK_Loopet_Guides, Playwrite_DK_Uloopet, Playwrite_DK_Uloopet_Guides, Playwrite_ES, Playwrite_ES_Deco, Playwrite_ES_Deco_Guides, Playwrite_ES_Guides, Playwrite_FR_Moderne, Playwrite_FR_Moderne_Guides, Playwrite_FR_Trad, Playwrite_FR_Trad_Guides, Playwrite_GB_J, Playwrite_GB_J_Guides, Playwrite_GB_S, Playwrite_GB_S_Guides, Playwrite_HR, Playwrite_HR_Guides, Playwrite_HR_Lijeva, Playwrite_HR_Lijeva_Guides, Playwrite_HU, Playwrite_HU_Guides, Playwrite_ID, Playwrite_ID_Guides, Playwrite_IE, Playwrite_IE_Guides, Playwrite_IN, Playwrite_IN_Guides, Playwrite_IS, Playwrite_IS_Guides, Playwrite_IT_Moderna, Playwrite_IT_Moderna_Guides, Playwrite_IT_Trad, Playwrite_IT_Trad_Guides, Playwrite_MX, Playwrite_MX_Guides, Playwrite_NG_Modern, Playwrite_NG_Modern_Guides, Playwrite_NL, Playwrite_NL_Guides, Playwrite_NO, Playwrite_NO_Guides, Playwrite_NZ, Playwrite_NZ_Basic, Playwrite_NZ_Basic_Guides, Playwrite_NZ_Guides, Playwrite_PE, Playwrite_PE_Guides, Playwrite_PL, Playwrite_PL_Guides, Playwrite_PT, Playwrite_PT_Guides, Playwrite_RO, Playwrite_RO_Guides, Playwrite_SK, Playwrite_SK_Guides, Playwrite_TZ, Playwrite_TZ_Guides, Playwrite_US_Modern, Playwrite_US_Modern_Guides, Playwrite_US_Trad, Playwrite_US_Trad_Guides, Playwrite_VN, Playwrite_VN_Guides, Playwrite_ZA, Playwrite_ZA_Guides, Plus_Jakarta_Sans, Pochaevsk, Podkova, Poetsen_One, Poiret_One, Poller_One, Poltawski_Nowy, Poly, Pompiere, Ponnala, Ponomar, Pontano_Sans, Poor_Story, Poppins, Port_Lligat_Sans, Port_Lligat_Slab, Potta_One, Pragati_Narrow, Praise, Prata, Preahvihear, Press_Start_2P, Pridi, Princess_Sofia, Prociono, Prompt, Prosto_One, Protest_Guerrilla, Protest_Revolution, Protest_Riot, Protest_Strike, Proza_Libre, Public_Sans, Puppies_Play, Puritan, Purple_Purse, Qahiri, Quando, Quantico, Quattrocento, Quattrocento_Sans, Questrial, Quicksand, Quintessential, Qwigley, Qwitcher_Grypen, REM, Racing_Sans_One, Radio_Canada, Radio_Canada_Big, Radley, Rajdhani, Rakkas, Raleway, Raleway_Dots, Ramabhadra, Ramaraja, Rambla, Rammetto_One, Rampart_One, Ramsina, Ranchers, Rancho, Ranga, Rasa, Rationale, Ravi_Prakash, Readex_Pro, Recursive, Red_Hat_Display, Red_Hat_Mono, Red_Hat_Text, Red_Rose, Redacted, Redacted_Script, Reddit_Mono, Reddit_Sans, Reddit_Sans_Condensed, Redressed, Reem_Kufi, Reem_Kufi_Fun, Reem_Kufi_Ink, Reenie_Beanie, Reggae_One, Rethink_Sans, Revalia, Rhodium_Libre, Ribeye, Ribeye_Marrow, Righteous, Risque, Road_Rage, Roboto, Roboto_Condensed, Roboto_Flex, Roboto_Mono, Roboto_Serif, Roboto_Slab, Rochester, Rock_3D, Rock_Salt, RocknRoll_One, Rokkitt, Romanesco, Ropa_Sans, Rosario, Rosarivo, Rouge_Script, Rowdies, Rozha_One, Rubik, Rubik_80s_Fade, Rubik_Beastly, Rubik_Broken_Fax, Rubik_Bubbles, Rubik_Burned, Rubik_Dirt, Rubik_Distressed, Rubik_Doodle_Shadow, Rubik_Doodle_Triangles, Rubik_Gemstones, Rubik_Glitch, Rubik_Glitch_Pop, Rubik_Iso, Rubik_Lines, Rubik_Maps, Rubik_Marker_Hatch, Rubik_Maze, Rubik_Microbe, Rubik_Mono_One, Rubik_Moonrocks, Rubik_Pixels, Rubik_Puddles, Rubik_Scribble, Rubik_Spray_Paint, Rubik_Storm, Rubik_Vinyl, Rubik_Wet_Paint, Ruda, Rufina, Ruge_Boogie, Ruluko, Rum_Raisin, Ruslan_Display, Russo_One, Ruthie, Ruwudu, Rye, SN_Pro, STIX_Two_Text, SUSE, SUSE_Mono, Sacramento, Sahitya, Sail, Saira, Saira_Condensed, Saira_Extra_Condensed, Saira_Semi_Condensed, Saira_Stencil_One, Salsa, Sanchez, Sancreek, Sankofa_Display, Sansation, Sansita, Sansita_Swashed, Sarabun, Sarala, Sarina, Sarpanch, Sassy_Frass, Satisfy, Savate, Sawarabi_Gothic, Sawarabi_Mincho, Scada, Scheherazade_New, Schibsted_Grotesk, Schoolbell, Science_Gothic, Scope_One, Seaweed_Script, Secular_One, Sedan, Sedan_SC, Sedgwick_Ave, Sedgwick_Ave_Display, Sekuya, Sen, Send_Flowers, Sevillana, Seymour_One, Shadows_Into_Light, Shadows_Into_Light_Two, Shafarik, Shalimar, Shantell_Sans, Shanti, Share, Share_Tech, Share_Tech_Mono, Shippori_Antique, Shippori_Antique_B1, Shippori_Mincho, Shippori_Mincho_B1, Shizuru, Shojumaru, Short_Stack, Shrikhand, Siemreap, Sigmar, Sigmar_One, Signika, Signika_Negative, Silkscreen, Simonetta, Single_Day, Sintony, Sirin_Stencil, Sirivennela, Six_Caps, Sixtyfour, Sixtyfour_Convergence, Skranji, Slabo_13px, Slabo_27px, Slackey, Slackside_One, Smokum, Smooch, Smooch_Sans, Smythe, Sniglet, Snippet, Snowburst_One, Sofadi_One, Sofia, Sofia_Sans, Sofia_Sans_Condensed, Sofia_Sans_Extra_Condensed, Sofia_Sans_Semi_Condensed, Solitreo, Solway, Sometype_Mono, Song_Myung, Sono, Sonsie_One, Sora, Sorts_Mill_Goudy, Sour_Gummy, Source_Code_Pro, Source_Sans_3, Source_Serif_4, Space_Grotesk, Space_Mono, Special_Elite, Special_Gothic, Special_Gothic_Condensed_One, Special_Gothic_Expanded_One, Spectral, Spectral_SC, Spicy_Rice, Spinnaker, Spirax, Splash, Spline_Sans, Spline_Sans_Mono, Squada_One, Square_Peg, Sree_Krushnadevaraya, Sriracha, Srisakdi, Staatliches, Stack_Sans_Headline, Stack_Sans_Notch, Stack_Sans_Text, Stalemate, Stalinist_One, Stardos_Stencil, Stick, Stick_No_Bills, Stint_Ultra_Condensed, Stint_Ultra_Expanded, Stoke, Story_Script, Strait, Style_Script, Stylish, Sue_Ellen_Francisco, Suez_One, Sulphur_Point, Sumana, Sunflower, Sunshiney, Supermercado_One, Sura, Suranna, Suravaram, Suwannaphum, Swanky_and_Moo_Moo, Syncopate, Syne, Syne_Mono, Syne_Tactile, TASA_Explorer, TASA_Orbiter, Tac_One, Tagesschrift, Tai_Heritage_Pro, Tajawal, Tangerine, Tapestry, Taprom, Tauri, Taviraj, Teachers, Teko, Tektur, Telex, Tenali_Ramakrishna, Tenor_Sans, Text_Me_One, Texturina, Thasadith, The_Girl_Next_Door, The_Nautigal, Tienne, TikTok_Sans, Tillana, Tilt_Neon, Tilt_Prism, Tilt_Warp, Timmana, Tinos, Tiny5, Tiro_Bangla, Tiro_Devanagari_Hindi, Tiro_Devanagari_Marathi, Tiro_Devanagari_Sanskrit, Tiro_Gurmukhi, Tiro_Kannada, Tiro_Tamil, Tiro_Telugu, Tirra, Titan_One, Titillium_Web, Tomorrow, Tourney, Trade_Winds, Train_One, Triodion, Trirong, Trispace, Trocchi, Trochut, Truculenta, Trykker, Tsukimi_Rounded, Tuffy, Tulpen_One, Turret_Road, Twinkle_Star, Ubuntu, Ubuntu_Condensed, Ubuntu_Mono, Ubuntu_Sans, Ubuntu_Sans_Mono, Uchen, Ultra, Unbounded, Uncial_Antiqua, Underdog, Unica_One, UnifrakturCook, UnifrakturMaguntia, Unkempt, Unlock, Unna, UoqMunThenKhung, Updock, Urbanist, VT323, Vampiro_One, Varela, Varela_Round, Varta, Vast_Shadow, Vazirmatn, Vend_Sans, Vesper_Libre, Viaoda_Libre, Vibes, Vibur, Victor_Mono, Vidaloka, Viga, Vina_Sans, Voces, Volkhov, Vollkorn, Vollkorn_SC, Voltaire, Vujahday_Script, WDXL_Lubrifont_JP_N, WDXL_Lubrifont_SC, WDXL_Lubrifont_TC, Waiting_for_the_Sunrise, Wallpoet, Walter_Turncoat, Warnes, Water_Brush, Waterfall, Wavefont, Wellfleet, Wendy_One, Whisper, WindSong, Winky_Rough, Winky_Sans, Wire_One, Wittgenstein, Wix_Madefor_Display, Wix_Madefor_Text, Work_Sans, Workbench, Xanh_Mono, Yaldevi, Yanone_Kaffeesatz, Yantramanav, Yarndings_12, Yarndings_12_Charted, Yarndings_20, Yarndings_20_Charted, Yatra_One, Yellowtail, Yeon_Sung, Yeseva_One, Yesteryear, Yomogi, Young_Serif, Yrsa, Ysabeau, Ysabeau_Infant, Ysabeau_Office, Ysabeau_SC, Yuji_Boku, Yuji_Hentaigana_Akari, Yuji_Hentaigana_Akebono, Yuji_Mai, Yuji_Syuku, Yusei_Magic, ZCOOL_KuaiLe, ZCOOL_QingKe_HuangYou, ZCOOL_XiaoWei, Zain, Zalando_Sans, Zalando_Sans_Expanded, Zalando_Sans_SemiExpanded, Zen_Antique, Zen_Antique_Soft, Zen_Dots, Zen_Kaku_Gothic_Antique, Zen_Kaku_Gothic_New, Zen_Kurenaido, Zen_Loop, Zen_Maru_Gothic, Zen_Old_Mincho, Zen_Tokyo_Zoo, Zeyada, Zhi_Mang_Xing, Zilla_Slab, Zilla_Slab_Highlight } from "./font-google.generated.js";
3
+ export { ABeeZee, ADLaM_Display, AR_One_Sans, Abel, Abhaya_Libre, Aboreto, Abril_Fatface, Abyssinica_SIL, Aclonica, Acme, Actor, Adamina, Advent_Pro, Afacad, Afacad_Flux, Agbalumo, Agdasima, Agu_Display, Aguafina_Script, Akatab, Akaya_Kanadaka, Akaya_Telivigala, Akronim, Akshar, Aladin, Alan_Sans, Alata, Alatsi, Albert_Sans, Aldrich, Alef, Alegreya, Alegreya_SC, Alegreya_Sans, Alegreya_Sans_SC, Aleo, Alex_Brush, Alexandria, Alfa_Slab_One, Alice, Alike, Alike_Angular, Alkalami, Alkatra, Allan, Allerta, Allerta_Stencil, Allison, Allkin, Allura, Almarai, Almendra, Almendra_Display, Almendra_SC, Alumni_Sans, Alumni_Sans_Collegiate_One, Alumni_Sans_Inline_One, Alumni_Sans_Pinstripe, Alumni_Sans_SC, Alyamama, Amarante, Amaranth, Amarna, Amatic_SC, Amethysta, Amiko, Amiri, Amiri_Quran, Amita, Anaheim, Ancizar_Sans, Ancizar_Serif, Andada_Pro, Andika, Anek_Bangla, Anek_Devanagari, Anek_Gujarati, Anek_Gurmukhi, Anek_Kannada, Anek_Latin, Anek_Malayalam, Anek_Odia, Anek_Tamil, Anek_Telugu, Angkor, Annapurna_SIL, Annie_Use_Your_Telescope, Anonymous_Pro, Anta, Antic, Antic_Didone, Antic_Slab, Anton, Anton_SC, Antonio, Anuphan, Anybody, Aoboshi_One, Arapey, Arbutus, Arbutus_Slab, Architects_Daughter, Archivo, Archivo_Black, Archivo_Narrow, Are_You_Serious, Aref_Ruqaa, Aref_Ruqaa_Ink, Arima, Arimo, Arizonia, Armata, Arsenal, Arsenal_SC, Artifika, Arvo, Arya, Asap, Asap_Condensed, Asar, Asimovian, Asset, Assistant, Asta_Sans, Astloch, Asul, Athiti, Atkinson_Hyperlegible, Atkinson_Hyperlegible_Mono, Atkinson_Hyperlegible_Next, Atma, Atomic_Age, Aubrey, Audiowide, Autour_One, Average, Average_Sans, Averia_Gruesa_Libre, Averia_Libre, Averia_Sans_Libre, Averia_Serif_Libre, Azeret_Mono, B612, B612_Mono, BBH_Bartle, BBH_Bogle, BBH_Hegarty, BIZ_UDGothic, BIZ_UDMincho, BIZ_UDPGothic, BIZ_UDPMincho, Babylonica, Bacasime_Antique, Bad_Script, Badeen_Display, Bagel_Fat_One, Bahiana, Bahianita, Bai_Jamjuree, Bakbak_One, Ballet, Baloo_2, Baloo_Bhai_2, Baloo_Bhaijaan_2, Baloo_Bhaina_2, Baloo_Chettan_2, Baloo_Da_2, Baloo_Paaji_2, Baloo_Tamma_2, Baloo_Tammudu_2, Baloo_Thambi_2, Balsamiq_Sans, Balthazar, Bangers, Barlow, Barlow_Condensed, Barlow_Semi_Condensed, Barriecito, Barrio, Basic, Baskervville, Baskervville_SC, Battambang, Baumans, Bayon, Be_Vietnam_Pro, Beau_Rivage, Bebas_Neue, Beiruti, Belanosima, Belgrano, Bellefair, Belleza, Bellota, Bellota_Text, BenchNine, Benne, Bentham, Berkshire_Swash, Besley, Betania_Patmos, Betania_Patmos_GDL, Betania_Patmos_In, Betania_Patmos_In_GDL, Beth_Ellen, Bevan, BhuTuka_Expanded_One, Big_Shoulders, Big_Shoulders_Inline, Big_Shoulders_Stencil, Bigelow_Rules, Bigshot_One, Bilbo, Bilbo_Swash_Caps, BioRhyme, BioRhyme_Expanded, Birthstone, Birthstone_Bounce, Biryani, Bitcount, Bitcount_Grid_Double, Bitcount_Grid_Double_Ink, Bitcount_Grid_Single, Bitcount_Grid_Single_Ink, Bitcount_Ink, Bitcount_Prop_Double, Bitcount_Prop_Double_Ink, Bitcount_Prop_Single, Bitcount_Prop_Single_Ink, Bitcount_Single, Bitcount_Single_Ink, Bitter, Black_And_White_Picture, Black_Han_Sans, Black_Ops_One, Blaka, Blaka_Hollow, Blaka_Ink, Blinker, Bodoni_Moda, Bodoni_Moda_SC, Bokor, Boldonse, Bona_Nova, Bona_Nova_SC, Bonbon, Bonheur_Royale, Boogaloo, Borel, Bowlby_One, Bowlby_One_SC, Bpmf_Huninn, Bpmf_Iansui, Bpmf_Zihi_Kai_Std, Braah_One, Brawler, Bree_Serif, Bricolage_Grotesque, Bruno_Ace, Bruno_Ace_SC, Brygada_1918, Bubblegum_Sans, Bubbler_One, Buda, Buenard, Bungee, Bungee_Hairline, Bungee_Inline, Bungee_Outline, Bungee_Shade, Bungee_Spice, Bungee_Tint, Butcherman, Butterfly_Kids, Bytesized, Cabin, Cabin_Condensed, Cabin_Sketch, Cactus_Classical_Serif, Caesar_Dressing, Cagliostro, Cairo, Cairo_Play, Cal_Sans, Caladea, Calistoga, Calligraffitti, Cambay, Cambo, Candal, Cantarell, Cantata_One, Cantora_One, Caprasimo, Capriola, Caramel, Carattere, Cardo, Carlito, Carme, Carrois_Gothic, Carrois_Gothic_SC, Carter_One, Cascadia_Code, Cascadia_Mono, Castoro, Castoro_Titling, Catamaran, Caudex, Cause, Caveat, Caveat_Brush, Cedarville_Cursive, Ceviche_One, Chakra_Petch, Changa, Changa_One, Chango, Charis_SIL, Charm, Charmonman, Chathura, Chau_Philomene_One, Chela_One, Chelsea_Market, Chenla, Cherish, Cherry_Bomb_One, Cherry_Cream_Soda, Cherry_Swash, Chewy, Chicle, Chilanka, Chiron_GoRound_TC, Chiron_Hei_HK, Chiron_Sung_HK, Chivo, Chivo_Mono, Chocolate_Classical_Sans, Chokokutai, Chonburi, Cinzel, Cinzel_Decorative, Clicker_Script, Climate_Crisis, Coda, Codystar, Coiny, Combo, Comfortaa, Comforter, Comforter_Brush, Comic_Neue, Comic_Relief, Coming_Soon, Comme, Commissioner, Concert_One, Condiment, Content, Contrail_One, Convergence, Cookie, Copse, Coral_Pixels, Corben, Corinthia, Cormorant, Cormorant_Garamond, Cormorant_Infant, Cormorant_SC, Cormorant_Unicase, Cormorant_Upright, Cossette_Texte, Cossette_Titre, Courgette, Courier_Prime, Cousine, Coustard, Covered_By_Your_Grace, Crafty_Girls, Creepster, Crete_Round, Crimson_Pro, Crimson_Text, Croissant_One, Crushed, Cuprum, Cute_Font, Cutive, Cutive_Mono, DM_Mono, DM_Sans, DM_Serif_Display, DM_Serif_Text, Dai_Banna_SIL, Damion, Dancing_Script, Danfo, Dangrek, Darker_Grotesque, Darumadrop_One, David_Libre, Dawning_of_a_New_Day, Days_One, Dekko, Dela_Gothic_One, Delicious_Handrawn, Delius, Delius_Swash_Caps, Delius_Unicase, Della_Respira, Denk_One, Devonshire, Dhurjati, Didact_Gothic, Diphylleia, Diplomata, Diplomata_SC, Do_Hyeon, Dokdo, Domine, Donegal_One, Dongle, Doppio_One, Dorsa, Dosis, DotGothic16, Doto, Dr_Sugiyama, Duru_Sans, DynaPuff, Dynalight, EB_Garamond, Eagle_Lake, East_Sea_Dokdo, Eater, Economica, Eczar, Edu_AU_VIC_WA_NT_Arrows, Edu_AU_VIC_WA_NT_Dots, Edu_AU_VIC_WA_NT_Guides, Edu_AU_VIC_WA_NT_Hand, Edu_AU_VIC_WA_NT_Pre, Edu_NSW_ACT_Cursive, Edu_NSW_ACT_Foundation, Edu_NSW_ACT_Hand_Pre, Edu_QLD_Beginner, Edu_QLD_Hand, Edu_SA_Beginner, Edu_SA_Hand, Edu_TAS_Beginner, Edu_VIC_WA_NT_Beginner, Edu_VIC_WA_NT_Hand, Edu_VIC_WA_NT_Hand_Pre, El_Messiri, Electrolize, Elms_Sans, Elsie, Elsie_Swash_Caps, Emblema_One, Emilys_Candy, Encode_Sans, Encode_Sans_Condensed, Encode_Sans_Expanded, Encode_Sans_SC, Encode_Sans_Semi_Condensed, Encode_Sans_Semi_Expanded, Engagement, Englebert, Enriqueta, Ephesis, Epilogue, Epunda_Sans, Epunda_Slab, Erica_One, Esteban, Estonia, Euphoria_Script, Ewert, Exile, Exo, Exo_2, Expletus_Sans, Explora, Faculty_Glyphic, Fahkwang, Familjen_Grotesk, Fanwood_Text, Farro, Farsan, Fascinate, Fascinate_Inline, Faster_One, Fasthand, Fauna_One, Faustina, Federant, Federo, Felipa, Fenix, Festive, Figtree, Finger_Paint, Finlandica, Fira_Code, Fira_Mono, Fira_Sans, Fira_Sans_Condensed, Fira_Sans_Extra_Condensed, Fjalla_One, Fjord_One, Flamenco, Flavors, Fleur_De_Leah, Flow_Block, Flow_Circular, Flow_Rounded, Foldit, Fondamento, Fontdiner_Swanky, Forum, Fragment_Mono, Francois_One, Frank_Ruhl_Libre, Fraunces, Freckle_Face, Fredericka_the_Great, Fredoka, Freehand, Freeman, Fresca, Frijole, Fruktur, Fugaz_One, Fuggles, Funnel_Display, Funnel_Sans, Fustat, Fuzzy_Bubbles, GFS_Didot, GFS_Neohellenic, Ga_Maamli, Gabarito, Gabriela, Gaegu, Gafata, Gajraj_One, Galada, Galdeano, Galindo, Gamja_Flower, Gantari, Gasoek_One, Gayathri, Geist, Geist_Mono, Gelasio, Gemunu_Libre, Genos, Gentium_Book_Plus, Gentium_Plus, Geo, Geologica, Geom, Georama, Geostar, Geostar_Fill, Germania_One, Gideon_Roman, Gidole, Gidugu, Gilda_Display, Girassol, Give_You_Glory, Glass_Antiqua, Glegoo, Gloock, Gloria_Hallelujah, Glory, Gluten, Goblin_One, Gochi_Hand, Goldman, Golos_Text, Google_Sans, Google_Sans_Code, Google_Sans_Flex, Gorditas, Gothic_A1, Gotu, Goudy_Bookletter_1911, Gowun_Batang, Gowun_Dodum, Graduate, Grand_Hotel, Grandiflora_One, Grandstander, Grape_Nuts, Gravitas_One, Great_Vibes, Grechen_Fuemen, Grenze, Grenze_Gotisch, Grey_Qo, Griffy, Gruppo, Gudea, Gugi, Gulzar, Gupter, Gurajada, Gveret_Levin, Gwendolyn, Habibi, Hachi_Maru_Pop, Hahmlet, Halant, Hammersmith_One, Hanalei, Hanalei_Fill, Handjet, Handlee, Hanken_Grotesk, Hanuman, Happy_Monkey, Harmattan, Headland_One, Hedvig_Letters_Sans, Hedvig_Letters_Serif, Heebo, Henny_Penny, Hepta_Slab, Herr_Von_Muellerhoff, Hi_Melody, Hina_Mincho, Hind, Hind_Guntur, Hind_Madurai, Hind_Mysuru, Hind_Siliguri, Hind_Vadodara, Holtwood_One_SC, Homemade_Apple, Homenaje, Honk, Host_Grotesk, Hubballi, Hubot_Sans, Huninn, Hurricane, IBM_Plex_Mono, IBM_Plex_Sans, IBM_Plex_Sans_Arabic, IBM_Plex_Sans_Condensed, IBM_Plex_Sans_Devanagari, IBM_Plex_Sans_Hebrew, IBM_Plex_Sans_JP, IBM_Plex_Sans_KR, IBM_Plex_Sans_Thai, IBM_Plex_Sans_Thai_Looped, IBM_Plex_Serif, IM_Fell_DW_Pica, IM_Fell_DW_Pica_SC, IM_Fell_Double_Pica, IM_Fell_Double_Pica_SC, IM_Fell_English, IM_Fell_English_SC, IM_Fell_French_Canon, IM_Fell_French_Canon_SC, IM_Fell_Great_Primer, IM_Fell_Great_Primer_SC, Iansui, Ibarra_Real_Nova, Iceberg, Iceland, Idiqlat, Imbue, Imperial_Script, Imprima, Inclusive_Sans, Inconsolata, Inder, Indie_Flower, Ingrid_Darling, Inika, Inknut_Antiqua, Inria_Sans, Inria_Serif, Inspiration, Instrument_Sans, Instrument_Serif, Intel_One_Mono, Inter, Inter_Tight, Irish_Grover, Island_Moments, Istok_Web, Italiana, Italianno, Itim, Jacquard_12, Jacquard_12_Charted, Jacquard_24, Jacquard_24_Charted, Jacquarda_Bastarda_9, Jacquarda_Bastarda_9_Charted, Jacques_Francois, Jacques_Francois_Shadow, Jaini, Jaini_Purva, Jaldi, Jaro, Jersey_10, Jersey_10_Charted, Jersey_15, Jersey_15_Charted, Jersey_20, Jersey_20_Charted, Jersey_25, Jersey_25_Charted, JetBrains_Mono, Jim_Nightshade, Joan, Jockey_One, Jolly_Lodger, Jomhuria, Jomolhari, Josefin_Sans, Josefin_Slab, Jost, Joti_One, Jua, Judson, Julee, Julius_Sans_One, Junge, Jura, Just_Another_Hand, Just_Me_Again_Down_Here, K2D, Kablammo, Kadwa, Kaisei_Decol, Kaisei_HarunoUmi, Kaisei_Opti, Kaisei_Tokumin, Kalam, Kalnia, Kalnia_Glaze, Kameron, Kanchenjunga, Kanit, Kantumruy_Pro, Kapakana, Karantina, Karla, Karla_Tamil_Inclined, Karla_Tamil_Upright, Karma, Katibeh, Kaushan_Script, Kavivanar, Kavoon, Kay_Pho_Du, Kdam_Thmor_Pro, Keania_One, Kedebideri, Kelly_Slab, Kenia, Khand, Khmer, Khula, Kings, Kirang_Haerang, Kite_One, Kiwi_Maru, Klee_One, Knewave, KoHo, Kodchasan, Kode_Mono, Koh_Santepheap, Kolker_Brush, Konkhmer_Sleokchher, Kosugi, Kosugi_Maru, Kotta_One, Koulen, Kranky, Kreon, Kristi, Krona_One, Krub, Kufam, Kulim_Park, Kumar_One, Kumar_One_Outline, Kumbh_Sans, Kurale, LINE_Seed_JP, LXGW_Marker_Gothic, LXGW_WenKai_Mono_TC, LXGW_WenKai_TC, La_Belle_Aurore, Labrada, Lacquer, Laila, Lakki_Reddy, Lalezar, Lancelot, Langar, Lateef, Lato, Lavishly_Yours, League_Gothic, League_Script, League_Spartan, Leckerli_One, Ledger, Lekton, Lemon, Lemonada, Lexend, Lexend_Deca, Lexend_Exa, Lexend_Giga, Lexend_Mega, Lexend_Peta, Lexend_Tera, Lexend_Zetta, Libertinus_Keyboard, Libertinus_Math, Libertinus_Mono, Libertinus_Sans, Libertinus_Serif, Libertinus_Serif_Display, Libre_Barcode_128, Libre_Barcode_128_Text, Libre_Barcode_39, Libre_Barcode_39_Extended, Libre_Barcode_39_Extended_Text, Libre_Barcode_39_Text, Libre_Barcode_EAN13_Text, Libre_Baskerville, Libre_Bodoni, Libre_Caslon_Display, Libre_Caslon_Text, Libre_Franklin, Licorice, Life_Savers, Lilex, Lilita_One, Lily_Script_One, Limelight, Linden_Hill, Linefont, Lisu_Bosa, Liter, Literata, Liu_Jian_Mao_Cao, Livvic, Lobster, Lobster_Two, Londrina_Outline, Londrina_Shadow, Londrina_Sketch, Londrina_Solid, Long_Cang, Lora, Love_Light, Love_Ya_Like_A_Sister, Loved_by_the_King, Lovers_Quarrel, Luckiest_Guy, Lugrasimo, Lumanosimo, Lunasima, Lusitana, Lustria, Luxurious_Roman, Luxurious_Script, M_PLUS_1, M_PLUS_1_Code, M_PLUS_1p, M_PLUS_2, M_PLUS_Code_Latin, M_PLUS_Rounded_1c, Ma_Shan_Zheng, Macondo, Macondo_Swash_Caps, Mada, Madimi_One, Magra, Maiden_Orange, Maitree, Major_Mono_Display, Mako, Mali, Mallanna, Maname, Mandali, Manjari, Manrope, Mansalva, Manuale, Manufacturing_Consent, Marcellus, Marcellus_SC, Marck_Script, Margarine, Marhey, Markazi_Text, Marko_One, Marmelad, Martel, Martel_Sans, Martian_Mono, Marvel, Matangi, Mate, Mate_SC, Matemasie, Maven_Pro, McLaren, Mea_Culpa, Meddon, MedievalSharp, Medula_One, Meera_Inimai, Megrim, Meie_Script, Menbere, Meow_Script, Merienda, Merriweather, Merriweather_Sans, Metal, Metal_Mania, Metamorphous, Metrophobic, Michroma, Micro_5, Micro_5_Charted, Milonga, Miltonian, Miltonian_Tattoo, Mina, Mingzat, Miniver, Miriam_Libre, Mirza, Miss_Fajardose, Mitr, Mochiy_Pop_One, Mochiy_Pop_P_One, Modak, Modern_Antiqua, Moderustic, Mogra, Mohave, Moirai_One, Molengo, Molle, Momo_Signature, Momo_Trust_Display, Momo_Trust_Sans, Mona_Sans, Monda, Monofett, Monomakh, Monomaniac_One, Monoton, Monsieur_La_Doulaise, Montaga, Montagu_Slab, MonteCarlo, Montez, Montserrat, Montserrat_Alternates, Montserrat_Underline, Moo_Lah_Lah, Mooli, Moon_Dance, Moul, Moulpali, Mountains_of_Christmas, Mouse_Memoirs, Mozilla_Headline, Mozilla_Text, Mr_Bedfort, Mr_Dafoe, Mr_De_Haviland, Mrs_Saint_Delafield, Mrs_Sheppards, Ms_Madi, Mukta, Mukta_Mahee, Mukta_Malar, Mukta_Vaani, Mulish, Murecho, MuseoModerno, My_Soul, Mynerve, Mystery_Quest, NTR, Nabla, Namdhinggo, Nanum_Brush_Script, Nanum_Gothic, Nanum_Gothic_Coding, Nanum_Myeongjo, Nanum_Pen_Script, Narnoor, Nata_Sans, National_Park, Neonderthaw, Nerko_One, Neucha, Neuton, New_Amsterdam, New_Rocker, New_Tegomin, News_Cycle, Newsreader, Niconne, Niramit, Nixie_One, Nobile, Nokora, Norican, Nosifer, Notable, Nothing_You_Could_Do, Noticia_Text, Noto_Color_Emoji, Noto_Emoji, Noto_Kufi_Arabic, Noto_Music, Noto_Naskh_Arabic, Noto_Nastaliq_Urdu, Noto_Rashi_Hebrew, Noto_Sans, Noto_Sans_Adlam, Noto_Sans_Adlam_Unjoined, Noto_Sans_Anatolian_Hieroglyphs, Noto_Sans_Arabic, Noto_Sans_Armenian, Noto_Sans_Avestan, Noto_Sans_Balinese, Noto_Sans_Bamum, Noto_Sans_Bassa_Vah, Noto_Sans_Batak, Noto_Sans_Bengali, Noto_Sans_Bhaiksuki, Noto_Sans_Brahmi, Noto_Sans_Buginese, Noto_Sans_Buhid, Noto_Sans_Canadian_Aboriginal, Noto_Sans_Carian, Noto_Sans_Caucasian_Albanian, Noto_Sans_Chakma, Noto_Sans_Cham, Noto_Sans_Cherokee, Noto_Sans_Chorasmian, Noto_Sans_Coptic, Noto_Sans_Cuneiform, Noto_Sans_Cypriot, Noto_Sans_Cypro_Minoan, Noto_Sans_Deseret, Noto_Sans_Devanagari, Noto_Sans_Display, Noto_Sans_Duployan, Noto_Sans_Egyptian_Hieroglyphs, Noto_Sans_Elbasan, Noto_Sans_Elymaic, Noto_Sans_Ethiopic, Noto_Sans_Georgian, Noto_Sans_Glagolitic, Noto_Sans_Gothic, Noto_Sans_Grantha, Noto_Sans_Gujarati, Noto_Sans_Gunjala_Gondi, Noto_Sans_Gurmukhi, Noto_Sans_HK, Noto_Sans_Hanifi_Rohingya, Noto_Sans_Hanunoo, Noto_Sans_Hatran, Noto_Sans_Hebrew, Noto_Sans_Imperial_Aramaic, Noto_Sans_Indic_Siyaq_Numbers, Noto_Sans_Inscriptional_Pahlavi, Noto_Sans_Inscriptional_Parthian, Noto_Sans_JP, Noto_Sans_Javanese, Noto_Sans_KR, Noto_Sans_Kaithi, Noto_Sans_Kannada, Noto_Sans_Kawi, Noto_Sans_Kayah_Li, Noto_Sans_Kharoshthi, Noto_Sans_Khmer, Noto_Sans_Khojki, Noto_Sans_Khudawadi, Noto_Sans_Lao, Noto_Sans_Lao_Looped, Noto_Sans_Lepcha, Noto_Sans_Limbu, Noto_Sans_Linear_A, Noto_Sans_Linear_B, Noto_Sans_Lisu, Noto_Sans_Lycian, Noto_Sans_Lydian, Noto_Sans_Mahajani, Noto_Sans_Malayalam, Noto_Sans_Mandaic, Noto_Sans_Manichaean, Noto_Sans_Marchen, Noto_Sans_Masaram_Gondi, Noto_Sans_Math, Noto_Sans_Mayan_Numerals, Noto_Sans_Medefaidrin, Noto_Sans_Meetei_Mayek, Noto_Sans_Mende_Kikakui, Noto_Sans_Meroitic, Noto_Sans_Miao, Noto_Sans_Modi, Noto_Sans_Mongolian, Noto_Sans_Mono, Noto_Sans_Mro, Noto_Sans_Multani, Noto_Sans_Myanmar, Noto_Sans_NKo, Noto_Sans_NKo_Unjoined, Noto_Sans_Nabataean, Noto_Sans_Nag_Mundari, Noto_Sans_Nandinagari, Noto_Sans_New_Tai_Lue, Noto_Sans_Newa, Noto_Sans_Nushu, Noto_Sans_Ogham, Noto_Sans_Ol_Chiki, Noto_Sans_Old_Hungarian, Noto_Sans_Old_Italic, Noto_Sans_Old_North_Arabian, Noto_Sans_Old_Permic, Noto_Sans_Old_Persian, Noto_Sans_Old_Sogdian, Noto_Sans_Old_South_Arabian, Noto_Sans_Old_Turkic, Noto_Sans_Oriya, Noto_Sans_Osage, Noto_Sans_Osmanya, Noto_Sans_Pahawh_Hmong, Noto_Sans_Palmyrene, Noto_Sans_Pau_Cin_Hau, Noto_Sans_PhagsPa, Noto_Sans_Phoenician, Noto_Sans_Psalter_Pahlavi, Noto_Sans_Rejang, Noto_Sans_Runic, Noto_Sans_SC, Noto_Sans_Samaritan, Noto_Sans_Saurashtra, Noto_Sans_Sharada, Noto_Sans_Shavian, Noto_Sans_Siddham, Noto_Sans_SignWriting, Noto_Sans_Sinhala, Noto_Sans_Sogdian, Noto_Sans_Sora_Sompeng, Noto_Sans_Soyombo, Noto_Sans_Sundanese, Noto_Sans_Sunuwar, Noto_Sans_Syloti_Nagri, Noto_Sans_Symbols, Noto_Sans_Symbols_2, Noto_Sans_Syriac, Noto_Sans_Syriac_Eastern, Noto_Sans_Syriac_Western, Noto_Sans_TC, Noto_Sans_Tagalog, Noto_Sans_Tagbanwa, Noto_Sans_Tai_Le, Noto_Sans_Tai_Tham, Noto_Sans_Tai_Viet, Noto_Sans_Takri, Noto_Sans_Tamil, Noto_Sans_Tamil_Supplement, Noto_Sans_Tangsa, Noto_Sans_Telugu, Noto_Sans_Thaana, Noto_Sans_Thai, Noto_Sans_Thai_Looped, Noto_Sans_Tifinagh, Noto_Sans_Tirhuta, Noto_Sans_Ugaritic, Noto_Sans_Vai, Noto_Sans_Vithkuqi, Noto_Sans_Wancho, Noto_Sans_Warang_Citi, Noto_Sans_Yi, Noto_Sans_Zanabazar_Square, Noto_Serif, Noto_Serif_Ahom, Noto_Serif_Armenian, Noto_Serif_Balinese, Noto_Serif_Bengali, Noto_Serif_Devanagari, Noto_Serif_Display, Noto_Serif_Dives_Akuru, Noto_Serif_Dogra, Noto_Serif_Ethiopic, Noto_Serif_Georgian, Noto_Serif_Grantha, Noto_Serif_Gujarati, Noto_Serif_Gurmukhi, Noto_Serif_HK, Noto_Serif_Hebrew, Noto_Serif_Hentaigana, Noto_Serif_JP, Noto_Serif_KR, Noto_Serif_Kannada, Noto_Serif_Khitan_Small_Script, Noto_Serif_Khmer, Noto_Serif_Khojki, Noto_Serif_Lao, Noto_Serif_Makasar, Noto_Serif_Malayalam, Noto_Serif_Myanmar, Noto_Serif_NP_Hmong, Noto_Serif_Old_Uyghur, Noto_Serif_Oriya, Noto_Serif_Ottoman_Siyaq, Noto_Serif_SC, Noto_Serif_Sinhala, Noto_Serif_TC, Noto_Serif_Tamil, Noto_Serif_Tangut, Noto_Serif_Telugu, Noto_Serif_Thai, Noto_Serif_Tibetan, Noto_Serif_Todhri, Noto_Serif_Toto, Noto_Serif_Vithkuqi, Noto_Serif_Yezidi, Noto_Traditional_Nushu, Noto_Znamenny_Musical_Notation, Nova_Cut, Nova_Flat, Nova_Mono, Nova_Oval, Nova_Round, Nova_Script, Nova_Slim, Nova_Square, Numans, Nunito, Nunito_Sans, Nuosu_SIL, Odibee_Sans, Odor_Mean_Chey, Offside, Oi, Ojuju, Old_Standard_TT, Oldenburg, Ole, Oleo_Script, Oleo_Script_Swash_Caps, Onest, Oooh_Baby, Open_Sans, Oranienbaum, Orbit, Orbitron, Oregano, Orelega_One, Orienta, Original_Surfer, Oswald, Outfit, Over_the_Rainbow, Overlock, Overlock_SC, Overpass, Overpass_Mono, Ovo, Oxanium, Oxygen, Oxygen_Mono, PT_Mono, PT_Sans, PT_Sans_Caption, PT_Sans_Narrow, PT_Serif, PT_Serif_Caption, Pacifico, Padauk, Padyakke_Expanded_One, Palanquin, Palanquin_Dark, Palette_Mosaic, Pangolin, Paprika, Parastoo, Parisienne, Parkinsans, Passero_One, Passion_One, Passions_Conflict, Pathway_Extreme, Pathway_Gothic_One, Patrick_Hand, Patrick_Hand_SC, Pattaya, Patua_One, Pavanam, Paytone_One, Peddana, Peralta, Permanent_Marker, Petemoss, Petit_Formal_Script, Petrona, Phetsarath, Philosopher, Phudu, Piazzolla, Piedra, Pinyon_Script, Pirata_One, Pixelify_Sans, Plaster, Platypi, Play, Playball, Playfair, Playfair_Display, Playfair_Display_SC, Playpen_Sans, Playpen_Sans_Arabic, Playpen_Sans_Deva, Playpen_Sans_Hebrew, Playpen_Sans_Thai, Playwrite_AR, Playwrite_AR_Guides, Playwrite_AT, Playwrite_AT_Guides, Playwrite_AU_NSW, Playwrite_AU_NSW_Guides, Playwrite_AU_QLD, Playwrite_AU_QLD_Guides, Playwrite_AU_SA, Playwrite_AU_SA_Guides, Playwrite_AU_TAS, Playwrite_AU_TAS_Guides, Playwrite_AU_VIC, Playwrite_AU_VIC_Guides, Playwrite_BE_VLG, Playwrite_BE_VLG_Guides, Playwrite_BE_WAL, Playwrite_BE_WAL_Guides, Playwrite_BR, Playwrite_BR_Guides, Playwrite_CA, Playwrite_CA_Guides, Playwrite_CL, Playwrite_CL_Guides, Playwrite_CO, Playwrite_CO_Guides, Playwrite_CU, Playwrite_CU_Guides, Playwrite_CZ, Playwrite_CZ_Guides, Playwrite_DE_Grund, Playwrite_DE_Grund_Guides, Playwrite_DE_LA, Playwrite_DE_LA_Guides, Playwrite_DE_SAS, Playwrite_DE_SAS_Guides, Playwrite_DE_VA, Playwrite_DE_VA_Guides, Playwrite_DK_Loopet, Playwrite_DK_Loopet_Guides, Playwrite_DK_Uloopet, Playwrite_DK_Uloopet_Guides, Playwrite_ES, Playwrite_ES_Deco, Playwrite_ES_Deco_Guides, Playwrite_ES_Guides, Playwrite_FR_Moderne, Playwrite_FR_Moderne_Guides, Playwrite_FR_Trad, Playwrite_FR_Trad_Guides, Playwrite_GB_J, Playwrite_GB_J_Guides, Playwrite_GB_S, Playwrite_GB_S_Guides, Playwrite_HR, Playwrite_HR_Guides, Playwrite_HR_Lijeva, Playwrite_HR_Lijeva_Guides, Playwrite_HU, Playwrite_HU_Guides, Playwrite_ID, Playwrite_ID_Guides, Playwrite_IE, Playwrite_IE_Guides, Playwrite_IN, Playwrite_IN_Guides, Playwrite_IS, Playwrite_IS_Guides, Playwrite_IT_Moderna, Playwrite_IT_Moderna_Guides, Playwrite_IT_Trad, Playwrite_IT_Trad_Guides, Playwrite_MX, Playwrite_MX_Guides, Playwrite_NG_Modern, Playwrite_NG_Modern_Guides, Playwrite_NL, Playwrite_NL_Guides, Playwrite_NO, Playwrite_NO_Guides, Playwrite_NZ, Playwrite_NZ_Basic, Playwrite_NZ_Basic_Guides, Playwrite_NZ_Guides, Playwrite_PE, Playwrite_PE_Guides, Playwrite_PL, Playwrite_PL_Guides, Playwrite_PT, Playwrite_PT_Guides, Playwrite_RO, Playwrite_RO_Guides, Playwrite_SK, Playwrite_SK_Guides, Playwrite_TZ, Playwrite_TZ_Guides, Playwrite_US_Modern, Playwrite_US_Modern_Guides, Playwrite_US_Trad, Playwrite_US_Trad_Guides, Playwrite_VN, Playwrite_VN_Guides, Playwrite_ZA, Playwrite_ZA_Guides, Plus_Jakarta_Sans, Pochaevsk, Podkova, Poetsen_One, Poiret_One, Poller_One, Poltawski_Nowy, Poly, Pompiere, Ponnala, Ponomar, Pontano_Sans, Poor_Story, Poppins, Port_Lligat_Sans, Port_Lligat_Slab, Potta_One, Pragati_Narrow, Praise, Prata, Preahvihear, Press_Start_2P, Pridi, Princess_Sofia, Prociono, Prompt, Prosto_One, Protest_Guerrilla, Protest_Revolution, Protest_Riot, Protest_Strike, Proza_Libre, Public_Sans, Puppies_Play, Puritan, Purple_Purse, Qahiri, Quando, Quantico, Quattrocento, Quattrocento_Sans, Questrial, Quicksand, Quintessential, Qwigley, Qwitcher_Grypen, REM, Racing_Sans_One, Radio_Canada, Radio_Canada_Big, Radley, Rajdhani, Rakkas, Raleway, Raleway_Dots, Ramabhadra, Ramaraja, Rambla, Rammetto_One, Rampart_One, Ramsina, Ranchers, Rancho, Ranga, Rasa, Rationale, Ravi_Prakash, Readex_Pro, Recursive, Red_Hat_Display, Red_Hat_Mono, Red_Hat_Text, Red_Rose, Redacted, Redacted_Script, Reddit_Mono, Reddit_Sans, Reddit_Sans_Condensed, Redressed, Reem_Kufi, Reem_Kufi_Fun, Reem_Kufi_Ink, Reenie_Beanie, Reggae_One, Rethink_Sans, Revalia, Rhodium_Libre, Ribeye, Ribeye_Marrow, Righteous, Risque, Road_Rage, Roboto, Roboto_Condensed, Roboto_Flex, Roboto_Mono, Roboto_Serif, Roboto_Slab, Rochester, Rock_3D, Rock_Salt, RocknRoll_One, Rokkitt, Romanesco, Ropa_Sans, Rosario, Rosarivo, Rouge_Script, Rowdies, Rozha_One, Rubik, Rubik_80s_Fade, Rubik_Beastly, Rubik_Broken_Fax, Rubik_Bubbles, Rubik_Burned, Rubik_Dirt, Rubik_Distressed, Rubik_Doodle_Shadow, Rubik_Doodle_Triangles, Rubik_Gemstones, Rubik_Glitch, Rubik_Glitch_Pop, Rubik_Iso, Rubik_Lines, Rubik_Maps, Rubik_Marker_Hatch, Rubik_Maze, Rubik_Microbe, Rubik_Mono_One, Rubik_Moonrocks, Rubik_Pixels, Rubik_Puddles, Rubik_Scribble, Rubik_Spray_Paint, Rubik_Storm, Rubik_Vinyl, Rubik_Wet_Paint, Ruda, Rufina, Ruge_Boogie, Ruluko, Rum_Raisin, Ruslan_Display, Russo_One, Ruthie, Ruwudu, Rye, SN_Pro, STIX_Two_Text, SUSE, SUSE_Mono, Sacramento, Sahitya, Sail, Saira, Saira_Condensed, Saira_Extra_Condensed, Saira_Semi_Condensed, Saira_Stencil_One, Salsa, Sanchez, Sancreek, Sankofa_Display, Sansation, Sansita, Sansita_Swashed, Sarabun, Sarala, Sarina, Sarpanch, Sassy_Frass, Satisfy, Savate, Sawarabi_Gothic, Sawarabi_Mincho, Scada, Scheherazade_New, Schibsted_Grotesk, Schoolbell, Science_Gothic, Scope_One, Seaweed_Script, Secular_One, Sedan, Sedan_SC, Sedgwick_Ave, Sedgwick_Ave_Display, Sekuya, Sen, Send_Flowers, Sevillana, Seymour_One, Shadows_Into_Light, Shadows_Into_Light_Two, Shafarik, Shalimar, Shantell_Sans, Shanti, Share, Share_Tech, Share_Tech_Mono, Shippori_Antique, Shippori_Antique_B1, Shippori_Mincho, Shippori_Mincho_B1, Shizuru, Shojumaru, Short_Stack, Shrikhand, Siemreap, Sigmar, Sigmar_One, Signika, Signika_Negative, Silkscreen, Simonetta, Single_Day, Sintony, Sirin_Stencil, Sirivennela, Six_Caps, Sixtyfour, Sixtyfour_Convergence, Skranji, Slabo_13px, Slabo_27px, Slackey, Slackside_One, Smokum, Smooch, Smooch_Sans, Smythe, Sniglet, Snippet, Snowburst_One, Sofadi_One, Sofia, Sofia_Sans, Sofia_Sans_Condensed, Sofia_Sans_Extra_Condensed, Sofia_Sans_Semi_Condensed, Solitreo, Solway, Sometype_Mono, Song_Myung, Sono, Sonsie_One, Sora, Sorts_Mill_Goudy, Sour_Gummy, Source_Code_Pro, Source_Sans_3, Source_Serif_4, Space_Grotesk, Space_Mono, Special_Elite, Special_Gothic, Special_Gothic_Condensed_One, Special_Gothic_Expanded_One, Spectral, Spectral_SC, Spicy_Rice, Spinnaker, Spirax, Splash, Spline_Sans, Spline_Sans_Mono, Squada_One, Square_Peg, Sree_Krushnadevaraya, Sriracha, Srisakdi, Staatliches, Stack_Sans_Headline, Stack_Sans_Notch, Stack_Sans_Text, Stalemate, Stalinist_One, Stardos_Stencil, Stick, Stick_No_Bills, Stint_Ultra_Condensed, Stint_Ultra_Expanded, Stoke, Story_Script, Strait, Style_Script, Stylish, Sue_Ellen_Francisco, Suez_One, Sulphur_Point, Sumana, Sunflower, Sunshiney, Supermercado_One, Sura, Suranna, Suravaram, Suwannaphum, Swanky_and_Moo_Moo, Syncopate, Syne, Syne_Mono, Syne_Tactile, TASA_Explorer, TASA_Orbiter, Tac_One, Tagesschrift, Tai_Heritage_Pro, Tajawal, Tangerine, Tapestry, Taprom, Tauri, Taviraj, Teachers, Teko, Tektur, Telex, Tenali_Ramakrishna, Tenor_Sans, Text_Me_One, Texturina, Thasadith, The_Girl_Next_Door, The_Nautigal, Tienne, TikTok_Sans, Tillana, Tilt_Neon, Tilt_Prism, Tilt_Warp, Timmana, Tinos, Tiny5, Tiro_Bangla, Tiro_Devanagari_Hindi, Tiro_Devanagari_Marathi, Tiro_Devanagari_Sanskrit, Tiro_Gurmukhi, Tiro_Kannada, Tiro_Tamil, Tiro_Telugu, Tirra, Titan_One, Titillium_Web, Tomorrow, Tourney, Trade_Winds, Train_One, Triodion, Trirong, Trispace, Trocchi, Trochut, Truculenta, Trykker, Tsukimi_Rounded, Tuffy, Tulpen_One, Turret_Road, Twinkle_Star, Ubuntu, Ubuntu_Condensed, Ubuntu_Mono, Ubuntu_Sans, Ubuntu_Sans_Mono, Uchen, Ultra, Unbounded, Uncial_Antiqua, Underdog, Unica_One, UnifrakturCook, UnifrakturMaguntia, Unkempt, Unlock, Unna, UoqMunThenKhung, Updock, Urbanist, VT323, Vampiro_One, Varela, Varela_Round, Varta, Vast_Shadow, Vazirmatn, Vend_Sans, Vesper_Libre, Viaoda_Libre, Vibes, Vibur, Victor_Mono, Vidaloka, Viga, Vina_Sans, Voces, Volkhov, Vollkorn, Vollkorn_SC, Voltaire, Vujahday_Script, WDXL_Lubrifont_JP_N, WDXL_Lubrifont_SC, WDXL_Lubrifont_TC, Waiting_for_the_Sunrise, Wallpoet, Walter_Turncoat, Warnes, Water_Brush, Waterfall, Wavefont, Wellfleet, Wendy_One, Whisper, WindSong, Winky_Rough, Winky_Sans, Wire_One, Wittgenstein, Wix_Madefor_Display, Wix_Madefor_Text, Work_Sans, Workbench, Xanh_Mono, Yaldevi, Yanone_Kaffeesatz, Yantramanav, Yarndings_12, Yarndings_12_Charted, Yarndings_20, Yarndings_20_Charted, Yatra_One, Yellowtail, Yeon_Sung, Yeseva_One, Yesteryear, Yomogi, Young_Serif, Yrsa, Ysabeau, Ysabeau_Infant, Ysabeau_Office, Ysabeau_SC, Yuji_Boku, Yuji_Hentaigana_Akari, Yuji_Hentaigana_Akebono, Yuji_Mai, Yuji_Syuku, Yusei_Magic, ZCOOL_KuaiLe, ZCOOL_QingKe_HuangYou, ZCOOL_XiaoWei, Zain, Zalando_Sans, Zalando_Sans_Expanded, Zalando_Sans_SemiExpanded, Zen_Antique, Zen_Antique_Soft, Zen_Dots, Zen_Kaku_Gothic_Antique, Zen_Kaku_Gothic_New, Zen_Kurenaido, Zen_Loop, Zen_Maru_Gothic, Zen_Old_Mincho, Zen_Tokyo_Zoo, Zeyada, Zhi_Mang_Xing, Zilla_Slab, Zilla_Slab_Highlight, buildGoogleFontsUrl, googleFonts as default, getSSRFontLinks, getSSRFontPreloads, getSSRFontStyles };