diff --git a/packages/font/README.md b/packages/font/README.md index 39b038d8caed..7733e03417b5 100644 --- a/packages/font/README.md +++ b/packages/font/README.md @@ -1,3 +1,7 @@ # `@next/font` -Experimental `@next/font` package +`@next/font` includes built-in automatic self-hosting for any font file. This means you can optimally load web fonts with zero layout shift, thanks to the underlying CSS size-adjust property used. + +This new font system also allows you to conveniently use all Google Fonts with performance and privacy in mind. CSS and font files are downloaded at build time and self-hosted with the rest of your static assets. No requests are sent to Google by the browser. + +[Read more](https://nextjs.org/docs/optimizing/fonts) diff --git a/packages/next-swc/crates/core/src/next_font_loaders/font_imports_generator.rs b/packages/next-swc/crates/core/src/next_font_loaders/font_imports_generator.rs index ada0df21d4cb..e6e123ec36fb 100644 --- a/packages/next-swc/crates/core/src/next_font_loaders/font_imports_generator.rs +++ b/packages/next-swc/crates/core/src/next_font_loaders/font_imports_generator.rs @@ -248,7 +248,10 @@ fn expr_to_json(expr: &Expr) -> Result { } lit => HANDLER.with(|handler| { handler - .struct_span_err(lit.span(), "Unexpected value") + .struct_span_err( + lit.span(), + "Font loader values must be explicitly written literals.", + ) .emit(); Err(()) }), diff --git a/packages/next-swc/crates/core/tests/errors/next-font-loaders/options-object/output.stderr b/packages/next-swc/crates/core/tests/errors/next-font-loaders/options-object/output.stderr index ec93d2affb8c..8ae26eb33f0d 100644 --- a/packages/next-swc/crates/core/tests/errors/next-font-loaders/options-object/output.stderr +++ b/packages/next-swc/crates/core/tests/errors/next-font-loaders/options-object/output.stderr @@ -5,13 +5,13 @@ : ^^ `---- - x Unexpected value + x Font loader values must be explicitly written literals. ,-[input.js:7:1] 7 | const a = ABeeZee({ variant: [i1] }) : ^^ `---- - x Unexpected value + x Font loader values must be explicitly written literals. ,-[input.js:10:1] 10 | const a = ABeeZee({ variant: () => {} }) : ^^^^^^^^ diff --git a/packages/next/font/google/index.js b/packages/next/font/google/index.js new file mode 100644 index 000000000000..e16a36e0735d --- /dev/null +++ b/packages/next/font/google/index.js @@ -0,0 +1,3 @@ +throw new Error( + 'You tried to import `next/font/google`, did you mean `@next/font/google`?\nRead more: https://nextjs.org/docs/optimizing/fonts' +) diff --git a/packages/next/font/index.js b/packages/next/font/index.js new file mode 100644 index 000000000000..f208343aee3d --- /dev/null +++ b/packages/next/font/index.js @@ -0,0 +1,3 @@ +throw new Error( + 'You tried to import `next/font`, did you mean `@next/font`?\nRead more: https://nextjs.org/docs/optimizing/fonts' +) diff --git a/packages/next/font/local/index.js b/packages/next/font/local/index.js new file mode 100644 index 000000000000..92e74f90a729 --- /dev/null +++ b/packages/next/font/local/index.js @@ -0,0 +1,3 @@ +throw new Error( + 'You tried to import `next/font/local`, did you mean `@next/font/local`?\nRead more: https://nextjs.org/docs/optimizing/fonts' +)