diff --git a/fern/assets/styles.css b/fern/assets/styles.css
index cafa4f31e..84d687d3d 100644
--- a/fern/assets/styles.css
+++ b/fern/assets/styles.css
@@ -372,6 +372,46 @@ a[href*="changelog"] svg {
.sdks-homepage {
position: relative;
+ .changelog-button {
+ display: flex;
+ padding: 0.25rem 0.5rem;
+ align-items: center;
+ justify-content: center;
+ border-radius: 0.5rem;
+ transition: background-color 0.15s ease-in-out;
+ position: relative;
+ height: 2rem;
+ text-decoration: none !important;
+
+ img {
+ flex-shrink: 0;
+ width: 16px;
+ height: 16px;
+ position: relative;
+ }
+
+ div {
+ font-size: 1rem;
+ white-space: nowrap;
+ max-width: 0;
+ opacity: 0;
+ overflow: hidden;
+ transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
+ width: 0;
+ }
+
+ &:hover {
+ gap: 0.25rem;
+ background-color: var(--grayscale-a3);
+
+ div {
+ max-width: 200px;
+ opacity: 1;
+ width: fit-content;
+ }
+ }
+ }
+
.dashed-pattern-left {
position: absolute;
left: -4rem;
diff --git a/fern/docs.yml b/fern/docs.yml
index 3b8ea36c2..c60737b63 100644
--- a/fern/docs.yml
+++ b/fern/docs.yml
@@ -57,31 +57,31 @@ products:
slug: api-definitions
- display-name: OpenAPI
- path: ./products/api-def/api-def.yml
+ path: ./products/api-def/openapi-def.yml
icon: fa-regular fa-book
image: ./images/product-switcher/openapi-definition-light.png
slug: openapi-definition
- display-name: AsyncAPI
- path: ./products/api-def/api-def.yml
+ path: ./products/api-def/asyncapi-def.yml
icon: fa-regular fa-bolt
image: ./images/product-switcher/asyncapi-light.png
slug: asyncapi-definition
- display-name: OpenRPC
- path: ./products/api-def/api-def.yml
+ path: ./products/api-def/openrpc-def.yml
icon: fa-regular fa-code
image: ./images/product-switcher/openrpc-light.png
slug: openrpc-definition
- display-name: gRPC
- path: ./products/api-def/api-def.yml
+ path: ./products/api-def/grpc-def.yml
icon: fa-regular fa-plug
image: ./images/product-switcher/grpc-light.png
slug: grpc-definition
- display-name: Fern Definition
- path: ./products/api-def/api-def.yml
+ path: ./products/api-def/ferndef-def.yml
icon: fa-regular fa-seedling
image: ./images/product-switcher/fern-definition-light.png
slug: fern-definition
@@ -411,6 +411,9 @@ redirects:
- source: /learn/docs/content/visual-editor
destination: /learn/docs/writing-content/visual-editor
permanent: true
+ - source: /learn/docs/writing-content/code-blocks
+ destination: /learn/docs/writing-content/components/code-blocks
+ permanent: true
- source: /learn/docs/getting-started/changelog/:slug*
destination: /learn/docs/changelog/:slug*
@@ -476,43 +479,40 @@ redirects:
# API DEFINITION REDIRECTS
# ============================================================================
- # API Definition OpenAPI specific redirects first
+ # # API Definition OpenAPI specific redirects first
- source: /learn/api-definition/openapi/endpoints/:slug*
- destination: /learn/openapi-definition/endpoints/:slug*
+ destination: /learn/api-definitions/openapi/endpoints/:slug*
permanent: true
- source: /learn/api-definition/openapi/extensions/:slug*
- destination: /learn/openapi-definition/extensions/:slug*
+ destination: /learn/api-definitions/openapi/extensions/:slug*
permanent: true
- source: /learn/api-definition/openapi/frameworks/:slug*
- destination: /learn/openapi-definition/frameworks/:slug*
+ destination: /learn/api-definitions/openapi/frameworks/:slug*
permanent: true
- source: /learn/api-definition/openapi/:slug*
- destination: /learn/openapi-definition/:slug*
+ destination: /learn/api-definitions/openapi/:slug*
permanent: true
- source: /learn/openapi-definition/extensions/webhooks
- destination: /learn/openapi-definition/endpoints/webhooks
+ destination: /learn/api-definitions/openapi/endpoints/webhooks
permanent: true
# API Definition Fern specific redirects first
- source: /learn/api-definition/fern/endpoints/:slug*
- destination: /learn/fern-definition/endpoints/:slug*
+ destination: /learn/api-definitions/ferndef/endpoints/:slug*
permanent: true
- source: /learn/api-definition/fern/api-yml/:slug*
- destination: /learn/fern-definition/api-yml/:slug*
+ destination: /learn/api-definitions/ferndef/api-yml/:slug*
permanent: true
- source: /learn/api-definition/fern/:slug*
- destination: /learn/fern-definition/:slug*
+ destination: /learn/api-definitions/ferndef/:slug*
permanent: true
- # API Definition Introduction redirects
+ # # API Definition Introduction redirects
- source: /learn/api-definition/introduction/what-is-an-api-definition
- destination: /learn/openapi-definition/overview
+ destination: /learn/api-definitions/overview/what-is-an-api-definition
permanent: true
- source: /learn/api-definition/introduction/what-is-the-fern-folder
- destination: /learn/sdks/overview/quickstart
- permanent: true
- - source: /learn/api-definition/introduction/:slug*
- destination: /learn/openapi-definition/overview
+ destination: /learn/api-definitions/overview/project-structure
permanent: true
# ============================================================================
@@ -573,6 +573,21 @@ redirects:
# ============================================================================
# API REFERENCE REDIRECTS
# ============================================================================
+ - source: /learn/openapi-definition/empty-page
+ destination: /learn/api-definitions/openapi/overview
+ permanent: true
+ - source: /learn/asyncapi-definition/empty-page
+ destination: /learn/api-definitions/asyncapi/overview
+ permanent: true
+ - source: /learn/openrpc-definition/empty-page
+ destination: /learn/api-definitions/openrpc/overview
+ permanent: true
+ - source: /learn/grpc-definition/empty-page
+ destination: /learn/api-definitions/grpc/overview
+ permanent: true
+ - source: /learn/fern-definition/empty-page
+ destination: /learn/api-definitions/ferndef/overview
+ permanent: true
- source: /learn/openapi-definition/:slug*
destination: /learn/api-definitions/openapi/:slug*
permanent: true
diff --git a/fern/products/api-def/asyncapi-def.yml b/fern/products/api-def/asyncapi-def.yml
new file mode 100644
index 000000000..b02b56214
--- /dev/null
+++ b/fern/products/api-def/asyncapi-def.yml
@@ -0,0 +1,4 @@
+navigation:
+ - page: AsyncAPI Definition Redirect Page
+ path: ./pages/asyncapi-empty.mdx
+ slug: empty-page
\ No newline at end of file
diff --git a/fern/products/api-def/ferndef-def.yml b/fern/products/api-def/ferndef-def.yml
new file mode 100644
index 000000000..54be8303f
--- /dev/null
+++ b/fern/products/api-def/ferndef-def.yml
@@ -0,0 +1,4 @@
+navigation:
+ - page: Fern Definition Redirect Page
+ path: ./pages/ferndef-empty.mdx
+ slug: empty-page
\ No newline at end of file
diff --git a/fern/products/api-def/grpc-def.yml b/fern/products/api-def/grpc-def.yml
new file mode 100644
index 000000000..9cec7f27d
--- /dev/null
+++ b/fern/products/api-def/grpc-def.yml
@@ -0,0 +1,4 @@
+navigation:
+ - page: gRPC Definition Redirect Page
+ path: ./pages/grpc-empty.mdx
+ slug: empty-page
\ No newline at end of file
diff --git a/fern/products/api-def/openapi-def.yml b/fern/products/api-def/openapi-def.yml
new file mode 100644
index 000000000..61e6da0e8
--- /dev/null
+++ b/fern/products/api-def/openapi-def.yml
@@ -0,0 +1,4 @@
+navigation:
+ - page: OpenAPI Definition Redirect Page
+ path: ./pages/openapi-empty.mdx
+ slug: empty-page
\ No newline at end of file
diff --git a/fern/products/api-def/openrpc-def.yml b/fern/products/api-def/openrpc-def.yml
new file mode 100644
index 000000000..9d8fe8c5d
--- /dev/null
+++ b/fern/products/api-def/openrpc-def.yml
@@ -0,0 +1,4 @@
+navigation:
+ - page: OpenRPC Definition Redirect Page
+ path: ./pages/openrpc-empty.mdx
+ slug: empty-page
\ No newline at end of file
diff --git a/fern/products/api-def/pages/asyncapi-empty.mdx b/fern/products/api-def/pages/asyncapi-empty.mdx
new file mode 100644
index 000000000..ce8d9a625
--- /dev/null
+++ b/fern/products/api-def/pages/asyncapi-empty.mdx
@@ -0,0 +1,6 @@
+---
+title: AsyncAPI Definition Redirect Page
+description: This is an empty page used to redirect to the AsyncAPI Definition pages.
+---
+
+