@react-email/preview-server 5.0.0-canary.9 → 5.0.1

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 (68) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/fallback-build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/_global-error.html +2 -2
  6. package/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  12. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/page/server-reference-manifest.json +1 -1
  15. package/.next/server/app/page.js.nft.json +1 -1
  16. package/.next/server/app/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/preview/[...slug]/page/server-reference-manifest.json +7 -7
  18. package/.next/server/app/preview/[...slug]/page.js +1 -1
  19. package/.next/server/app/preview/[...slug]/page.js.nft.json +1 -1
  20. package/.next/server/app/preview/[...slug]/page_client-reference-manifest.js +1 -1
  21. package/.next/server/chunks/ssr/[root-of-the-server]__18129482._.js +3 -3
  22. package/.next/server/chunks/ssr/{[root-of-the-server]__a8231bc4._.js → [root-of-the-server]__a0a18175._.js} +3 -3
  23. package/.next/server/chunks/ssr/{[root-of-the-server]__a8231bc4._.js.map → [root-of-the-server]__a0a18175._.js.map} +1 -1
  24. package/.next/server/chunks/ssr/{[root-of-the-server]__0f2789e9._.js → [root-of-the-server]__d473ad55._.js} +2 -2
  25. package/.next/server/chunks/ssr/_1e7382c4._.js +1 -1
  26. package/.next/server/chunks/ssr/_1e7382c4._.js.map +1 -1
  27. package/.next/server/chunks/ssr/_1f94369d._.js +65 -0
  28. package/.next/server/chunks/ssr/_1f94369d._.js.map +1 -0
  29. package/.next/server/chunks/ssr/_38d04011._.js +1 -1
  30. package/.next/server/chunks/ssr/_38d04011._.js.map +1 -1
  31. package/.next/server/chunks/ssr/_4918e306._.js +1 -1
  32. package/.next/server/chunks/ssr/_4918e306._.js.map +1 -1
  33. package/.next/server/chunks/ssr/_79065a4e._.js +1 -1
  34. package/.next/server/chunks/ssr/_79065a4e._.js.map +1 -1
  35. package/.next/server/chunks/ssr/_d3e887f6._.js +1 -1
  36. package/.next/server/chunks/ssr/_d3e887f6._.js.map +1 -1
  37. package/.next/server/chunks/ssr/packages_preview-server_src_f0998b31._.js +1 -1
  38. package/.next/server/chunks/ssr/packages_preview-server_src_f0998b31._.js.map +1 -1
  39. package/.next/server/pages/500.html +2 -2
  40. package/.next/server/server-reference-manifest.js +1 -1
  41. package/.next/server/server-reference-manifest.json +8 -8
  42. package/.next/static/chunks/{8ce29851cb58a52a.js → 45b1225b2717626c.js} +1 -1
  43. package/.next/static/chunks/8cac1d97e33c6868.js +1 -0
  44. package/.next/static/chunks/a1be64d092760bc6.js +1 -0
  45. package/.next/static/chunks/daa3196100e7d340.css +3 -0
  46. package/.next/static/chunks/{1d92333769998bd1.js → fca0e5e80bb0405b.js} +1 -1
  47. package/.next/trace +1 -1
  48. package/.next/trace-build +1 -1
  49. package/CHANGELOG.md +52 -0
  50. package/package.json +3 -3
  51. package/src/app/preview/[...slug]/preview.tsx +5 -4
  52. package/src/components/button.tsx +1 -1
  53. package/src/components/icons/icon-moon.tsx +5 -2
  54. package/src/components/icons/icon-sun.tsx +63 -2
  55. package/src/components/send.tsx +1 -1
  56. package/src/components/toolbar/resend.tsx +2 -1
  57. package/src/components/topbar/active-view-toggle-group.tsx +3 -3
  58. package/src/components/topbar/emulated-dark-mode-toggle.tsx +24 -2
  59. package/src/components/topbar/view-size-controls.tsx +1 -3
  60. package/.next/server/chunks/ssr/node_modules__pnpm_2fa1fe8f._.js +0 -65
  61. package/.next/server/chunks/ssr/node_modules__pnpm_2fa1fe8f._.js.map +0 -1
  62. package/.next/static/chunks/2e3bb8dc1fdb6193.css +0 -3
  63. package/.next/static/chunks/453e4889b9f897c4.js +0 -1
  64. package/.next/static/chunks/7f4f90b3dac949be.js +0 -1
  65. /package/.next/server/chunks/ssr/{[root-of-the-server]__0f2789e9._.js.map → [root-of-the-server]__d473ad55._.js.map} +0 -0
  66. /package/.next/static/{KdIzKfpULDdcTUwKRvjJr → fWKfDBA1-pCeZ3szdNaIB}/_buildManifest.js +0 -0
  67. /package/.next/static/{KdIzKfpULDdcTUwKRvjJr → fWKfDBA1-pCeZ3szdNaIB}/_clientMiddlewareManifest.json +0 -0
  68. /package/.next/static/{KdIzKfpULDdcTUwKRvjJr → fWKfDBA1-pCeZ3szdNaIB}/_ssgManifest.js +0 -0
package/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":178,"timestamp":69001557,"id":4,"parentId":1,"tags":{},"startTime":1762453627387,"traceId":"d4bc472d11b223ac"},{"name":"load-custom-routes","duration":173,"timestamp":69001797,"id":5,"parentId":1,"tags":{},"startTime":1762453627387,"traceId":"d4bc472d11b223ac"},{"name":"create-dist-dir","duration":177,"timestamp":69001987,"id":6,"parentId":1,"tags":{},"startTime":1762453627387,"traceId":"d4bc472d11b223ac"},{"name":"clean","duration":122,"timestamp":69002724,"id":7,"parentId":1,"tags":{},"startTime":1762453627388,"traceId":"d4bc472d11b223ac"},{"name":"create-pages-mapping","duration":130,"timestamp":69032018,"id":8,"parentId":1,"tags":{},"startTime":1762453627417,"traceId":"d4bc472d11b223ac"},{"name":"collect-app-files","duration":1603,"timestamp":69032174,"id":9,"parentId":1,"tags":{},"startTime":1762453627418,"traceId":"d4bc472d11b223ac"},{"name":"create-app-mapping","duration":961,"timestamp":69033796,"id":10,"parentId":1,"tags":{},"startTime":1762453627419,"traceId":"d4bc472d11b223ac"},{"name":"create-app-layouts","duration":102,"timestamp":69034780,"id":11,"parentId":1,"tags":{},"startTime":1762453627420,"traceId":"d4bc472d11b223ac"},{"name":"collect-default-files","duration":374,"timestamp":69035597,"id":13,"parentId":1,"tags":{},"startTime":1762453627421,"traceId":"d4bc472d11b223ac"},{"name":"generate-route-types","duration":8432,"timestamp":69035184,"id":12,"parentId":1,"tags":{},"startTime":1762453627421,"traceId":"d4bc472d11b223ac"},{"name":"public-dir-conflict-check","duration":57,"timestamp":69043683,"id":14,"parentId":1,"tags":{},"startTime":1762453627429,"traceId":"d4bc472d11b223ac"},{"name":"generate-routes-manifest","duration":1261,"timestamp":69043786,"id":15,"parentId":1,"tags":{},"startTime":1762453627429,"traceId":"d4bc472d11b223ac"},{"name":"run-turbopack","duration":7019096,"timestamp":69047255,"id":17,"parentId":1,"tags":{},"startTime":1762453627433,"traceId":"d4bc472d11b223ac"},{"name":"run-typescript","duration":5028787,"timestamp":76072326,"id":19,"parentId":1,"tags":{},"startTime":1762453634458,"traceId":"d4bc472d11b223ac"},{"name":"check-static-error-page","duration":1872,"timestamp":81146400,"id":22,"parentId":21,"tags":{},"startTime":1762453639532,"traceId":"d4bc472d11b223ac"},{"name":"is-page-static","duration":120818,"timestamp":81152424,"id":29,"parentId":24,"tags":{},"startTime":1762453639538,"traceId":"d4bc472d11b223ac"},{"name":"check-page","duration":125396,"timestamp":81147925,"id":24,"parentId":21,"tags":{"page":"/_global-error"},"startTime":1762453639533,"traceId":"d4bc472d11b223ac"},{"name":"is-page-static","duration":157997,"timestamp":81152213,"id":28,"parentId":23,"tags":{},"startTime":1762453639538,"traceId":"d4bc472d11b223ac"},{"name":"check-page","duration":163085,"timestamp":81147184,"id":23,"parentId":21,"tags":{"page":"/_not-found"},"startTime":1762453639533,"traceId":"d4bc472d11b223ac"},{"name":"is-page-static","duration":161233,"timestamp":81160617,"id":31,"parentId":25,"tags":{},"startTime":1762453639546,"traceId":"d4bc472d11b223ac"},{"name":"check-page","duration":174447,"timestamp":81148105,"id":25,"parentId":21,"tags":{"page":"/"},"startTime":1762453639534,"traceId":"d4bc472d11b223ac"},{"name":"is-page-static","duration":187389,"timestamp":81153097,"id":30,"parentId":27,"tags":{},"startTime":1762453639539,"traceId":"d4bc472d11b223ac"},{"name":"check-page","duration":192332,"timestamp":81148210,"id":27,"parentId":21,"tags":{"page":"/favicon.ico"},"startTime":1762453639534,"traceId":"d4bc472d11b223ac"},{"name":"is-page-static","duration":496050,"timestamp":81161755,"id":32,"parentId":26,"tags":{},"startTime":1762453639547,"traceId":"d4bc472d11b223ac"},{"name":"check-page","duration":509698,"timestamp":81148166,"id":26,"parentId":21,"tags":{"page":"/preview/[...slug]"},"startTime":1762453639534,"traceId":"d4bc472d11b223ac"},{"name":"static-check","duration":511984,"timestamp":81145901,"id":21,"parentId":1,"tags":{},"startTime":1762453639531,"traceId":"d4bc472d11b223ac"},{"name":"generate-required-server-files","duration":264,"timestamp":81658019,"id":34,"parentId":1,"tags":{},"startTime":1762453640043,"traceId":"d4bc472d11b223ac"},{"name":"write-routes-manifest","duration":146,"timestamp":81658660,"id":35,"parentId":1,"tags":{},"startTime":1762453640044,"traceId":"d4bc472d11b223ac"},{"name":"load-dotenv","duration":18,"timestamp":81666001,"id":38,"parentId":37,"tags":{},"startTime":1762453640051,"traceId":"d4bc472d11b223ac"},{"name":"run-export-path-map","duration":323,"timestamp":81668247,"id":39,"parentId":37,"tags":{},"startTime":1762453640054,"traceId":"d4bc472d11b223ac"},{"name":"next-export","duration":283116,"timestamp":81665409,"id":37,"parentId":1,"tags":{},"startTime":1762453640051,"traceId":"d4bc472d11b223ac"},{"name":"move-exported-app-global-error-","duration":274,"timestamp":81949218,"id":40,"parentId":36,"tags":{},"startTime":1762453640335,"traceId":"d4bc472d11b223ac"},{"name":"static-generation","duration":287318,"timestamp":81662920,"id":36,"parentId":1,"tags":{},"startTime":1762453640048,"traceId":"d4bc472d11b223ac"},{"name":"write-routes-manifest","duration":149,"timestamp":81950313,"id":41,"parentId":1,"tags":{},"startTime":1762453640336,"traceId":"d4bc472d11b223ac"},{"name":"print-tree-view","duration":977,"timestamp":81953349,"id":42,"parentId":1,"tags":{},"startTime":1762453640339,"traceId":"d4bc472d11b223ac"},{"name":"telemetry-flush","duration":201067,"timestamp":81954332,"id":43,"parentId":1,"tags":{},"startTime":1762453640340,"traceId":"d4bc472d11b223ac"},{"name":"next-build","duration":13283168,"timestamp":68872252,"id":1,"tags":{"buildMode":"default","version":"16.0.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1762453627258,"traceId":"d4bc472d11b223ac"}]
1
+ [{"name":"generate-buildid","duration":177,"timestamp":73388351,"id":4,"parentId":1,"tags":{},"startTime":1762527912929,"traceId":"031e127784453c57"},{"name":"load-custom-routes","duration":225,"timestamp":73388607,"id":5,"parentId":1,"tags":{},"startTime":1762527912929,"traceId":"031e127784453c57"},{"name":"create-dist-dir","duration":221,"timestamp":73388851,"id":6,"parentId":1,"tags":{},"startTime":1762527912929,"traceId":"031e127784453c57"},{"name":"clean","duration":155,"timestamp":73389845,"id":7,"parentId":1,"tags":{},"startTime":1762527912930,"traceId":"031e127784453c57"},{"name":"create-pages-mapping","duration":141,"timestamp":73433724,"id":8,"parentId":1,"tags":{},"startTime":1762527912974,"traceId":"031e127784453c57"},{"name":"collect-app-files","duration":1702,"timestamp":73433896,"id":9,"parentId":1,"tags":{},"startTime":1762527912974,"traceId":"031e127784453c57"},{"name":"create-app-mapping","duration":1679,"timestamp":73435620,"id":10,"parentId":1,"tags":{},"startTime":1762527912976,"traceId":"031e127784453c57"},{"name":"create-app-layouts","duration":96,"timestamp":73437353,"id":11,"parentId":1,"tags":{},"startTime":1762527912978,"traceId":"031e127784453c57"},{"name":"collect-default-files","duration":410,"timestamp":73438072,"id":13,"parentId":1,"tags":{},"startTime":1762527912979,"traceId":"031e127784453c57"},{"name":"generate-route-types","duration":8497,"timestamp":73437678,"id":12,"parentId":1,"tags":{},"startTime":1762527912978,"traceId":"031e127784453c57"},{"name":"public-dir-conflict-check","duration":51,"timestamp":73446191,"id":14,"parentId":1,"tags":{},"startTime":1762527912987,"traceId":"031e127784453c57"},{"name":"generate-routes-manifest","duration":1368,"timestamp":73446288,"id":15,"parentId":1,"tags":{},"startTime":1762527912987,"traceId":"031e127784453c57"},{"name":"run-turbopack","duration":7530351,"timestamp":73450081,"id":17,"parentId":1,"tags":{},"startTime":1762527912991,"traceId":"031e127784453c57"},{"name":"run-typescript","duration":6038715,"timestamp":80997743,"id":19,"parentId":1,"tags":{},"startTime":1762527920538,"traceId":"031e127784453c57"},{"name":"check-static-error-page","duration":1724,"timestamp":87089810,"id":22,"parentId":21,"tags":{},"startTime":1762527926630,"traceId":"031e127784453c57"},{"name":"is-page-static","duration":157006,"timestamp":87097899,"id":29,"parentId":24,"tags":{},"startTime":1762527926638,"traceId":"031e127784453c57"},{"name":"check-page","duration":163733,"timestamp":87091229,"id":24,"parentId":21,"tags":{"page":"/_global-error"},"startTime":1762527926632,"traceId":"031e127784453c57"},{"name":"is-page-static","duration":206963,"timestamp":87097710,"id":28,"parentId":23,"tags":{},"startTime":1762527926638,"traceId":"031e127784453c57"},{"name":"check-page","duration":214184,"timestamp":87090532,"id":23,"parentId":21,"tags":{"page":"/_not-found"},"startTime":1762527926631,"traceId":"031e127784453c57"},{"name":"is-page-static","duration":211892,"timestamp":87098550,"id":30,"parentId":27,"tags":{},"startTime":1762527926639,"traceId":"031e127784453c57"},{"name":"check-page","duration":218994,"timestamp":87091485,"id":27,"parentId":21,"tags":{"page":"/favicon.ico"},"startTime":1762527926632,"traceId":"031e127784453c57"},{"name":"is-page-static","duration":210516,"timestamp":87100907,"id":31,"parentId":25,"tags":{},"startTime":1762527926641,"traceId":"031e127784453c57"},{"name":"check-page","duration":220082,"timestamp":87091366,"id":25,"parentId":21,"tags":{"page":"/"},"startTime":1762527926632,"traceId":"031e127784453c57"},{"name":"is-page-static","duration":690833,"timestamp":87103544,"id":32,"parentId":26,"tags":{},"startTime":1762527926644,"traceId":"031e127784453c57"},{"name":"check-page","duration":703008,"timestamp":87091421,"id":26,"parentId":21,"tags":{"page":"/preview/[...slug]"},"startTime":1762527926632,"traceId":"031e127784453c57"},{"name":"static-check","duration":705109,"timestamp":87089344,"id":21,"parentId":1,"tags":{},"startTime":1762527926630,"traceId":"031e127784453c57"},{"name":"generate-required-server-files","duration":364,"timestamp":87794609,"id":34,"parentId":1,"tags":{},"startTime":1762527927335,"traceId":"031e127784453c57"},{"name":"write-routes-manifest","duration":222,"timestamp":87795396,"id":35,"parentId":1,"tags":{},"startTime":1762527927336,"traceId":"031e127784453c57"},{"name":"load-dotenv","duration":21,"timestamp":87802091,"id":38,"parentId":37,"tags":{},"startTime":1762527927343,"traceId":"031e127784453c57"},{"name":"run-export-path-map","duration":259,"timestamp":87803485,"id":39,"parentId":37,"tags":{},"startTime":1762527927344,"traceId":"031e127784453c57"},{"name":"next-export","duration":312591,"timestamp":87801316,"id":37,"parentId":1,"tags":{},"startTime":1762527927342,"traceId":"031e127784453c57"},{"name":"move-exported-app-global-error-","duration":454,"timestamp":88115021,"id":40,"parentId":36,"tags":{},"startTime":1762527927656,"traceId":"031e127784453c57"},{"name":"static-generation","duration":318447,"timestamp":87798155,"id":36,"parentId":1,"tags":{},"startTime":1762527927339,"traceId":"031e127784453c57"},{"name":"write-routes-manifest","duration":206,"timestamp":88116718,"id":41,"parentId":1,"tags":{},"startTime":1762527927657,"traceId":"031e127784453c57"},{"name":"print-tree-view","duration":1729,"timestamp":88123441,"id":42,"parentId":1,"tags":{},"startTime":1762527927664,"traceId":"031e127784453c57"},{"name":"telemetry-flush","duration":185569,"timestamp":88125177,"id":43,"parentId":1,"tags":{},"startTime":1762527927666,"traceId":"031e127784453c57"},{"name":"next-build","duration":15090739,"timestamp":73220025,"id":1,"tags":{"buildMode":"default","version":"16.0.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1762527912761,"traceId":"031e127784453c57"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":7019096,"timestamp":69047255,"id":17,"parentId":1,"tags":{},"startTime":1762453627433,"traceId":"d4bc472d11b223ac"},{"name":"run-typescript","duration":5028787,"timestamp":76072326,"id":19,"parentId":1,"tags":{},"startTime":1762453634458,"traceId":"d4bc472d11b223ac"},{"name":"static-check","duration":511984,"timestamp":81145901,"id":21,"parentId":1,"tags":{},"startTime":1762453639531,"traceId":"d4bc472d11b223ac"},{"name":"static-generation","duration":287318,"timestamp":81662920,"id":36,"parentId":1,"tags":{},"startTime":1762453640048,"traceId":"d4bc472d11b223ac"},{"name":"telemetry-flush","duration":201067,"timestamp":81954332,"id":43,"parentId":1,"tags":{},"startTime":1762453640340,"traceId":"d4bc472d11b223ac"},{"name":"next-build","duration":13283168,"timestamp":68872252,"id":1,"tags":{"buildMode":"default","version":"16.0.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1762453627258,"traceId":"d4bc472d11b223ac"}]
1
+ [{"name":"run-turbopack","duration":7530351,"timestamp":73450081,"id":17,"parentId":1,"tags":{},"startTime":1762527912991,"traceId":"031e127784453c57"},{"name":"run-typescript","duration":6038715,"timestamp":80997743,"id":19,"parentId":1,"tags":{},"startTime":1762527920538,"traceId":"031e127784453c57"},{"name":"static-check","duration":705109,"timestamp":87089344,"id":21,"parentId":1,"tags":{},"startTime":1762527926630,"traceId":"031e127784453c57"},{"name":"static-generation","duration":318447,"timestamp":87798155,"id":36,"parentId":1,"tags":{},"startTime":1762527927339,"traceId":"031e127784453c57"},{"name":"telemetry-flush","duration":185569,"timestamp":88125177,"id":43,"parentId":1,"tags":{},"startTime":1762527927666,"traceId":"031e127784453c57"},{"name":"next-build","duration":15090739,"timestamp":73220025,"id":1,"tags":{"buildMode":"default","version":"16.0.1","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1762527912761,"traceId":"031e127784453c57"}]
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @react-email/preview-server
2
2
 
3
+ ## 5.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 37b405b: Update link for Resend
8
+ - 56a696f: Increases the sleep time between bulk templates import to avoid exceeding the default API rate limit of 2 requests per second
9
+
10
+ ## 5.0.0
11
+
12
+ ### Major Changes
13
+
14
+ - 442f5b6: only check compatibility with tailwindcss@4
15
+
16
+ ### Minor Changes
17
+
18
+ - 161083a: Integrate with Templates API so users can easily turn React Email templates into actual Resend templates
19
+ - 95c7417: Dark mode switcher emulating email client color inversion
20
+
21
+ ### Patch Changes
22
+
23
+ - c6fa03e: improve color inversion code, don't remount iframe
24
+ - b6b027c: advise `npx` to run email setup command
25
+ - 18bc11a: fix compatibility checking not woring with inline object styles, and not working on properties such as `justifyContent`/`justify-content`
26
+ - e1ef323: improve reading flow for resend integration setup instructions
27
+ - 1b3176e: fallback to not text coloring for Node.js < 20
28
+ - f43f1ce: show separate timings for bundling/rendering an email template
29
+ - 397e98c: darken the canvas background when dark mode is enabled
30
+ - ef8702b: ui improvements
31
+ - 75d651b: reduce margins bellow buttons
32
+ - Updated dependencies [1e76981]
33
+ - Updated dependencies [442f5b6]
34
+ - Updated dependencies [2452b7d]
35
+ - @react-email/tailwind@2.0.0
36
+
37
+ ## 5.0.0-canary.12
38
+
39
+ ### Patch Changes
40
+
41
+ - ef8702b: ui improvements
42
+
43
+ ## 5.0.0-canary.11
44
+
45
+ ### Patch Changes
46
+
47
+ - 75d651b: reduce margins bellow buttons
48
+
49
+ ## 5.0.0-canary.10
50
+
51
+ ### Patch Changes
52
+
53
+ - 397e98c: darken the canvas background when dark mode is enabled
54
+
3
55
  ## 5.0.0-canary.9
4
56
 
5
57
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-email/preview-server",
3
- "version": "5.0.0-canary.9",
3
+ "version": "5.0.1",
4
4
  "description": "A live preview of your emails right in your browser.",
5
5
  "main": "./index.mjs",
6
6
  "dependencies": {
@@ -17,7 +17,7 @@
17
17
  "@radix-ui/react-toggle": "1.1.10",
18
18
  "@radix-ui/react-toggle-group": "1.1.11",
19
19
  "@radix-ui/react-tooltip": "1.2.8",
20
- "@react-email/tailwind": "2.0.0-canary.4",
20
+ "@react-email/tailwind": "2.0.0",
21
21
  "@types/node": "22.14.1",
22
22
  "@types/normalize-path": "3.0.2",
23
23
  "@types/react": "19.0.10",
@@ -65,7 +65,7 @@
65
65
  "autoprefixer": "10.4.21",
66
66
  "tailwindcss": "3.4.0",
67
67
  "typescript": "5.8.3",
68
- "@react-email/components": "1.0.0-canary.7"
68
+ "@react-email/components": "1.0.0"
69
69
  },
70
70
  "license": "MIT",
71
71
  "repository": {
@@ -98,6 +98,10 @@ const Preview = ({ emailTitle, className, ...props }: PreviewProps) => {
98
98
  <Topbar emailTitle={emailTitle}>
99
99
  {activeView === 'preview' ? (
100
100
  <>
101
+ <EmulatedDarkModeToggle
102
+ enabled={isDarkModeEnabled}
103
+ onChange={(enabled) => handleDarkModeChange(enabled)}
104
+ />
101
105
  <ViewSizeControls
102
106
  setViewHeight={(height) => {
103
107
  setHeight(height);
@@ -116,10 +120,6 @@ const Preview = ({ emailTitle, className, ...props }: PreviewProps) => {
116
120
  minWidth={minWidth}
117
121
  minHeight={minHeight}
118
122
  />
119
- <EmulatedDarkModeToggle
120
- enabled={isDarkModeEnabled}
121
- onChange={(enabled) => handleDarkModeChange(enabled)}
122
- />
123
123
  </>
124
124
  ) : null}
125
125
  <ActiveViewToggleGroup
@@ -138,6 +138,7 @@ const Preview = ({ emailTitle, className, ...props }: PreviewProps) => {
138
138
  className={cn(
139
139
  'h-[calc(100%-3.5rem-2.375rem)] will-change-[height] flex p-4 transition-[height] duration-300 relative',
140
140
  activeView === 'preview' && 'bg-gray-200',
141
+ activeView === 'preview' && isDarkModeEnabled && 'bg-gray-400',
141
142
  toolbarToggled && 'h-[calc(100%-3.5rem-13rem)]',
142
143
  className,
143
144
  )}
@@ -71,7 +71,7 @@ const getAppearance = (appearance: Appearance | undefined) => {
71
71
  'border-white bg-white text-black transition-colors duration-200 ease-in-out',
72
72
  'hover:bg-white/90',
73
73
  'focus:bg-white/90 focus:outline-none focus:ring-2 focus:ring-white/20',
74
- 'mt-2 mb-4 aria-disabled:border-transparent aria-disabled:bg-slate-11',
74
+ 'mt-2 mb-2 aria-disabled:border-transparent aria-disabled:bg-slate-11',
75
75
  ];
76
76
  case 'gradient':
77
77
  return [
@@ -4,8 +4,11 @@ import { IconBase } from './icon-base';
4
4
  export const IconMoon = ({ ...props }: IconProps) => (
5
5
  <IconBase {...props}>
6
6
  <path
7
- fill="currentColor"
8
- d="m17.75 4.09l-2.53 1.94l.91 3.06l-2.63-1.81l-2.63 1.81l.91-3.06l-2.53-1.94L12.44 4l1.06-3l1.06 3zm3.5 6.91l-1.64 1.25l.59 1.98l-1.7-1.17l-1.7 1.17l.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85c-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14c.4-.4.82-.76 1.27-1.08c.75-.53 1.93.36 1.85 1.19c-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82c-2.81 3.14-2.7 7.96.31 10.98c3.02 3.01 7.84 3.12 10.98.31"
7
+ stroke="currentColor"
8
+ strokeWidth="2"
9
+ strokeLinecap="round"
10
+ strokeLinejoin="round"
11
+ d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"
9
12
  />
10
13
  </IconBase>
11
14
  );
@@ -3,9 +3,70 @@ import { IconBase } from './icon-base';
3
3
 
4
4
  export const IconSun = ({ ...props }: IconProps) => (
5
5
  <IconBase {...props}>
6
+ <circle
7
+ cx="12"
8
+ cy="12"
9
+ r="4"
10
+ stroke="currentColor"
11
+ strokeWidth="2"
12
+ strokeLinecap="round"
13
+ strokeLinejoin="round"
14
+ />
15
+ <path
16
+ stroke="currentColor"
17
+ strokeWidth="2"
18
+ strokeLinecap="round"
19
+ strokeLinejoin="round"
20
+ d="M12 2v2"
21
+ />
22
+ <path
23
+ stroke="currentColor"
24
+ strokeWidth="2"
25
+ strokeLinecap="round"
26
+ strokeLinejoin="round"
27
+ d="M12 20v2"
28
+ />
29
+ <path
30
+ stroke="currentColor"
31
+ strokeWidth="2"
32
+ strokeLinecap="round"
33
+ strokeLinejoin="round"
34
+ d="m4.93 4.93 1.41 1.41"
35
+ />
36
+ <path
37
+ stroke="currentColor"
38
+ strokeWidth="2"
39
+ strokeLinecap="round"
40
+ strokeLinejoin="round"
41
+ d="m17.66 17.66 1.41 1.41"
42
+ />
43
+ <path
44
+ stroke="currentColor"
45
+ strokeWidth="2"
46
+ strokeLinecap="round"
47
+ strokeLinejoin="round"
48
+ d="M2 12h2"
49
+ />
50
+ <path
51
+ stroke="currentColor"
52
+ strokeWidth="2"
53
+ strokeLinecap="round"
54
+ strokeLinejoin="round"
55
+ d="M20 12h2"
56
+ />
57
+ <path
58
+ stroke="currentColor"
59
+ strokeWidth="2"
60
+ strokeLinecap="round"
61
+ strokeLinejoin="round"
62
+ d="m6.34 17.66-1.41 1.41"
63
+ />
6
64
  <path
7
- fill="currentColor"
8
- d="m3.55 19.09l1.41 1.41l1.8-1.79l-1.42-1.42M12 6c-3.31 0-6 2.69-6 6s2.69 6 6 6s6-2.69 6-6c0-3.32-2.69-6-6-6m8 7h3v-2h-3m-2.76 7.71l1.8 1.79l1.41-1.41l-1.79-1.8M20.45 5l-1.41-1.4l-1.8 1.79l1.42 1.42M13 1h-2v3h2M6.76 5.39L4.96 3.6L3.55 5l1.79 1.81zM1 13h3v-2H1m12 9h-2v3h2"
65
+ stroke="currentColor"
66
+ strokeWidth="2"
67
+ strokeLinecap="round"
68
+ strokeLinejoin="round"
69
+ d="m19.07 4.93-1.41 1.41"
9
70
  />
10
71
  </IconBase>
11
72
  );
@@ -118,7 +118,7 @@ export const Send = ({ markup }: { markup: string }) => {
118
118
  Powered by{' '}
119
119
  <a
120
120
  className="text-white/85 transition duration-300 ease-in-out hover:text-slate-12"
121
- href="https://resend.com"
121
+ href="https://go.resend.com/react-email"
122
122
  rel="noreferrer"
123
123
  target="_blank"
124
124
  >
@@ -152,7 +152,8 @@ export function ResendIntegration({
152
152
  );
153
153
  }
154
154
 
155
- await sleep(200);
155
+ // This avoid exceeding the default rate limit of 2 requests per second
156
+ await sleep(600);
156
157
  } catch (error) {
157
158
  console.error('Error processing %s:', emailSlug, error);
158
159
  setItems((prevItems) =>
@@ -18,7 +18,7 @@ export const ActiveViewToggleGroup = ({
18
18
  return (
19
19
  <ToggleGroup.Root
20
20
  aria-label="View mode"
21
- className="inline-block items-center bg-slate-2 border border-slate-6 rounded-md overflow-hidden h-[36px]"
21
+ className="lg:absolute lg:left-1/2 lg:-translate-x-1/2 inline-block items-center bg-slate-2 border border-slate-6 rounded-md overflow-hidden h-[36px]"
22
22
  onValueChange={(value) => {
23
23
  if (value) setActiveView(value);
24
24
  }}
@@ -32,8 +32,8 @@ export const ActiveViewToggleGroup = ({
32
32
  className={cn(
33
33
  'w-9 flex items-center py-2 transition ease-in-out duration-200 relative hover:text-slate-12',
34
34
  {
35
- 'text-slate-11': activeView !== 'desktop',
36
- 'text-slate-12': activeView === 'desktop',
35
+ 'text-slate-11': activeView !== 'preview',
36
+ 'text-slate-12': activeView === 'preview',
37
37
  },
38
38
  )}
39
39
  >
@@ -1,6 +1,7 @@
1
1
  import * as Toggle from '@radix-ui/react-toggle';
2
2
  import { cn } from '../../utils';
3
3
  import { IconMoon } from '../icons/icon-moon';
4
+ import { IconSun } from '../icons/icon-sun';
4
5
  import { Tooltip } from '../tooltip';
5
6
 
6
7
  interface EmulatedDarkModeToggleProps {
@@ -19,12 +20,33 @@ export const EmulatedDarkModeToggle = ({
19
20
  value="dark"
20
21
  className={cn(
21
22
  'relative w-9 h-9 flex items-center justify-center border border-slate-6 text-sm rounded-lg transition duration-200 ease-in-out',
22
- 'text-slate-11 hover:text-slate-12 aria-pressed:text-slate-12 aria-pressed:bg-slate-4',
23
+ 'text-slate-11 hover:text-slate-12 aria-pressed:bg-slate-4',
23
24
  )}
24
25
  pressed={enabled}
25
26
  onPressedChange={() => onChange(!enabled)}
26
27
  >
27
- <IconMoon />
28
+ <div className="relative w-5 h-5">
29
+ <div
30
+ className={cn(
31
+ 'absolute inset-0 flex items-center justify-center transition-all duration-300 ease-in-out',
32
+ enabled
33
+ ? 'opacity-0 scale-50 rotate-90'
34
+ : 'opacity-100 scale-100 rotate-0',
35
+ )}
36
+ >
37
+ <IconMoon />
38
+ </div>
39
+ <div
40
+ className={cn(
41
+ 'absolute inset-0 flex items-center justify-center transition-all duration-300 ease-in-out',
42
+ enabled
43
+ ? 'opacity-100 scale-100 rotate-0'
44
+ : 'opacity-0 scale-50 -rotate-90',
45
+ )}
46
+ >
47
+ <IconSun />
48
+ </div>
49
+ </div>
28
50
  </Toggle.Root>
29
51
  </Tooltip.Trigger>
30
52
  <Tooltip.Content>
@@ -88,9 +88,7 @@ export const ViewSizeControls = ({
88
88
  className={cn(
89
89
  'relative flex items-center justify-center w-9 transition-colors hover:text-slate-12',
90
90
  {
91
- 'bg-slate-4':
92
- viewWidth === preset.dimensions.width &&
93
- viewHeight === preset.dimensions.height,
91
+ 'bg-slate-4': viewWidth === preset.dimensions.width,
94
92
  },
95
93
  )}
96
94
  type="button"