From 4e81d16467062c59d414e60f43b2b04209067bd9 Mon Sep 17 00:00:00 2001 From: kodster28 Date: Mon, 18 May 2026 14:08:24 -0500 Subject: [PATCH 1/2] [Chore] Removed outdated files --- .agents/references/components.md | 204 +++++++++------- .agents/references/style-guide.md | 216 ++++++++--------- src/components/ExternalResources.astro | 51 ---- src/components/index.ts | 1 - src/content.config.ts | 5 - src/content/apps/index.yaml | 219 ------------------ src/content/docs/d1/demos.mdx | 17 +- src/content/docs/durable-objects/demos.mdx | 17 +- .../email-routing/email-workers/demos.mdx | 19 -- src/content/docs/hyperdrive/demos.mdx | 17 +- src/content/docs/images/demos.mdx | 12 +- src/content/docs/kv/demos.mdx | 17 +- src/content/docs/pages/demos.mdx | 12 +- .../framework-guides/deploy-a-hono-site.mdx | 7 - .../framework-guides/deploy-a-nuxt-site.mdx | 15 -- src/content/docs/r2/demos.mdx | 12 +- src/content/docs/realtime/sfu/demos.mdx | 8 +- .../components/external-resources.mdx | 60 ----- .../docs/style-guide/frontmatter/tags.mdx | 2 +- .../docs/turnstile/tutorials/index.mdx | 11 +- .../workers-ai/guides/demos-architectures.mdx | 12 +- src/content/docs/workers/demos.mdx | 17 +- src/schemas/apps.ts | 15 -- src/schemas/index.ts | 1 - 24 files changed, 277 insertions(+), 690 deletions(-) delete mode 100644 src/components/ExternalResources.astro delete mode 100644 src/content/apps/index.yaml delete mode 100644 src/content/docs/email-routing/email-workers/demos.mdx delete mode 100644 src/content/docs/style-guide/components/external-resources.mdx delete mode 100644 src/schemas/apps.ts diff --git a/.agents/references/components.md b/.agents/references/components.md index 2e42390e5b344e9..244c2f8fbb6b5af 100644 --- a/.agents/references/components.md +++ b/.agents/references/components.md @@ -14,6 +14,7 @@ import { Render } from "~/components"; + ``` @@ -34,7 +35,7 @@ Inside the partial, params are referenced as JS expressions: `{props.product}`. Renders a TypeScript code block and auto-generates a JavaScript tab using `ts-blank-space`. **Required for all Workers JS/TS examples** — do not use bare `ts`/`js` fences. -```mdx +````mdx import { TypeScriptExample } from "~/components"; @@ -44,11 +45,13 @@ export default { return new Response("Hello World"); } } satisfies ExportedHandler; -``` +```` + ``` Props: + - `filename` — optional, must end in `.ts`. The JS tab shows the `.js` equivalent. - `playground` — boolean. Adds "Run Worker in Playground" button to the JS tab. - `code` — object. Expressive Code options (e.g. `collapse: "1-2"`). Apply to both tabs. @@ -61,7 +64,7 @@ Note: Expressive Code fence options (`collapse={1-2}`, etc.) cannot be set on th Renders Wrangler config with synced TOML and JSON tabs, auto-converting between formats. **Required for all Wrangler configuration examples** — do not use bare `toml`/`jsonc` fences. -```mdx +````mdx import { WranglerConfig } from "~/components"; @@ -74,7 +77,8 @@ compatibility_date = "$today" binding = "DB" database_name = "prod-d1-tutorial" database_id = "" -``` +```` + ``` @@ -93,9 +97,11 @@ Shows a command across npm, yarn, and pnpm in synced tabs. **Required for packag import { PackageManagers } from "~/components"; + + ``` @@ -109,13 +115,14 @@ For showing different ways to accomplish the same thing. Use when there are mutu import { Tabs, TabItem } from "~/components"; - Dashboard instructions - API instructions - Terraform instructions + Dashboard instructions + API instructions + Terraform instructions ``` Standard `syncKey` values (sync tab selection across the page): + - `dashPlusAPI` — Dashboard / API / Terraform - `workersExamples` — JavaScript / TypeScript / Python / Rust @@ -146,13 +153,12 @@ Collapsible section. Use for supplementary content that would clutter the main f ```mdx import { Details } from "~/components"; -
- Content shown when expanded. -
+
Content shown when expanded.
+
- Content visible without interaction. + Content visible without interaction.
``` @@ -177,6 +183,7 @@ import { Plan } from "~/components"; + ``` @@ -192,10 +199,16 @@ import { GlossaryTooltip } from "~/components"; active zone -active zone + + + active zone + -active zone + + + active zone + ``` Props: `term` (required, matches a YAML entry key), `prepend` (optional text prepended to the definition), `link` (optional, wraps the inner text in a link). @@ -278,6 +291,7 @@ import { DashButton } from "~/components"; + ``` @@ -293,25 +307,28 @@ Fetches and displays a file from a Cloudflare GitHub repository. Use a full 40-c import { GitHubCode } from "~/components"; + + + ``` @@ -364,19 +381,21 @@ Starlight built-ins for styled card containers. Used on overview and navigation import { Card, LinkTitleCard, ListCard } from "~/components"; + - Interesting content you want to highlight. + Interesting content you want to highlight. + - Deploy your first Worker in minutes. + Deploy your first Worker in minutes. + -- [Docs](/workers/) -- [API reference](/api/) + - [Docs](/workers/) - [API reference](/api/) ``` @@ -402,13 +421,15 @@ Embeds a Cloudflare Stream video. Use `id` + `title` for a specific video, or `f import { Stream } from "~/components"; + + ``` @@ -424,24 +445,27 @@ Generates a formatted `curl` command from the Cloudflare OpenAPI schema. Use for import { APIRequest } from "~/components"; + + + ``` @@ -457,10 +481,10 @@ Generates a `curl` command for arbitrary (non-Cloudflare-API) URLs. Use when `AP import { CURL } from "~/components"; ``` @@ -479,7 +503,11 @@ import { WranglerCommand } from "~/components"; - + + ``` Use `ExtraFlagDetails` as a child to add or replace help text for specific flags: @@ -488,12 +516,12 @@ Use `ExtraFlagDetails` as a child to add or replace help text for specific flags import { WranglerCommand, ExtraFlagDetails } from "~/components"; - - Additional detail appended to the flag's help text. - - - Custom text that replaces the flag's help text entirely. - + + Additional detail appended to the flag's help text. + + + Custom text that replaces the flag's help text entirely. + ``` @@ -511,6 +539,7 @@ import { Markdown } from "~/components"; + ``` @@ -523,7 +552,7 @@ Limitations: no MDX features, no Astro image optimization, no syntax highlightin Creates a heading with a custom anchor ID — useful when writing headings inside components or non-Markdown files. In regular MDX, headings get anchors automatically via rehype plugins, so this is rarely needed. To override a heading ID in MDX, use an inline comment instead: ```mdx -## My heading {/*custom-anchor*/} +## My heading {/* custom-anchor */} ``` When you do need the component: @@ -531,7 +560,11 @@ When you do need the component: ```mdx import { AnchorHeading } from "~/components"; - + ``` Props: `title` (required, heading text), `slug` (required, custom anchor ID), `depth` (heading level, e.g. `2` for H2). @@ -546,8 +579,12 @@ Renders a styled link button. Useful for primary CTAs on overview and get-starte import { LinkButton } from "~/components"; Get started -More information -Other stuff + + More information + + + Other stuff + ``` Variants: `primary` (default), `secondary`, `minimal`. @@ -562,14 +599,14 @@ Starlight built-in. Renders a card with a title, description, and link. Use `Car import { LinkCard, CardGrid } from "~/components"; - - + + ``` @@ -582,12 +619,7 @@ Starlight built-in. Displays a file and directory tree. Use bold to highlight th ```mdx import { FileTree } from "~/components"; - -- src/ - - index.ts - - **worker.ts** -- wrangler.toml - +- src/ - index.ts - **worker.ts** - wrangler.toml ``` --- @@ -599,9 +631,7 @@ Renders a short description block directly below the page title. Prefer the `sum ```mdx import { Description } from "~/components"; - - A short description rendered below the page title. - +A short description rendered below the page title. ``` --- @@ -614,7 +644,7 @@ Renders a feature card with a name and link. Used on product overview pages to l import { Feature } from "~/components"; - Coordinate state and logic across Workers with strongly consistent storage. + Coordinate state and logic across Workers with strongly consistent storage. ``` @@ -630,7 +660,7 @@ Renders a related product card with an icon, name, and link. Used on overview pa import { RelatedProduct } from "~/components"; - Store large amounts of unstructured data without egress fees. + Store large amounts of unstructured data without egress fees. ``` @@ -711,21 +741,6 @@ To add or update stats, edit `src/components/PublicStats.astro`. --- -## ExternalResources - -Pulls demo apps or videos from the central `src/content/apps/index.yaml` and `src/content/videos/index.yaml` collections, filtered by tags and products. - -```mdx -import { ExternalResources } from "~/components"; - - - -``` - -Props: `type` (required, `"apps"` or `"videos"`), `tags` (string array, filter by tag), `products` (string array, filter by product), `cloudflareOnly` (boolean, default `true`). - ---- - ## ResourcesBySelector Displays a filterable list of docs pages pulled by `pcx_content_type`, `tags`, and/or `products` frontmatter. Used on example and tutorial index pages. @@ -734,9 +749,9 @@ Displays a filterable list of docs pages pulled by `pcx_content_type`, `tags`, a import { ResourcesBySelector } from "~/components"; ``` @@ -807,7 +822,11 @@ import SubtractIPCalculator from "~/components/SubtractIPCalculator.tsx"; - + + ``` Note: imports directly from the `.tsx` file path, not from `~/components`. @@ -823,7 +842,9 @@ import { Width } from "~/components"; 75% of container width 50% of container width -25%, centered + + 25%, centered + ``` Props: `size` (required, `"large"` | `"medium"` | `"small"`), `center` (boolean). @@ -852,7 +873,10 @@ Lists available notification types for a product, sourced from `src/content/noti import { AvailableNotifications } from "~/components"; - + ``` Props: `product` (required, product name or slug), `notificationFilter` (optional, filter to a specific notification type by name). diff --git a/.agents/references/style-guide.md b/.agents/references/style-guide.md index ab12eb351deb394..c082ae156331822 100644 --- a/.agents/references/style-guide.md +++ b/.agents/references/style-guide.md @@ -8,10 +8,10 @@ Prescriptive rules for writing and reviewing content in this repository. Distill These characters have special meaning in MDX and **will break the build** if used unescaped in prose, tables, or headings: -| Character | Problem | Fix | -| --------- | ------- | --- | -| `{` `}` | Interpreted as JS expressions | Wrap in backticks or use `\{` `\}` | -| `<` `>` | Interpreted as JSX elements | Use `<` `>` or wrap in backticks | +| Character | Problem | Fix | +| --------- | ----------------------------- | -------------------------------------- | +| `{` `}` | Interpreted as JS expressions | Wrap in backticks or use `\{` `\}` | +| `<` `>` | Interpreted as JSX elements | Use `<` `>` or wrap in backticks | Component imports must appear after the frontmatter block. A used-but-not-imported component is a silent build failure. @@ -21,31 +21,31 @@ Component imports must appear after the frontmatter block. A used-but-not-import ### Required fields -| Field | Rule | -| ----- | ---- | -| `title` | Required. Plain text. | -| `pcx_content_type` | Required. Must be one of the valid values below. | -| `description` | Required for all pages with `pcx_content_type`. 1–2 self-contained sentences, 50–160 characters. | +| Field | Rule | +| ------------------ | ------------------------------------------------------------------------------------------------ | +| `title` | Required. Plain text. | +| `pcx_content_type` | Required. Must be one of the valid values below. | +| `description` | Required for all pages with `pcx_content_type`. 1–2 self-contained sentences, 50–160 characters. | Valid `pcx_content_type` values: `changelog`, `concept`, `configuration`, `design-guide`, `example`, `faq`, `get-started`, `how-to`, `integration-guide`, `implementation-guide`, `learning-unit`, `navigation`, `overview`, `reference`, `reference-architecture`, `reference-architecture-diagram`, `release-notes`, `solution-guide`, `troubleshooting`, `tutorial`, `video`. ### Optional fields -| Field | Type | Description | -| ----- | ---- | ----------- | -| `sidebar.order` | number | Sort order in the left nav. Lower = higher. | -| `sidebar.label` | string | Override the nav label (defaults to `title`). | -| `sidebar.hidden` | boolean | Hide from nav but keep the page accessible. | -| `products` | array | Related directory entries by filename from `src/content/directory/`. | -| `tags` | array | Related keywords. Validated against allowlist in `src/schemas/tags.ts` — invalid tags fail the build. | -| `difficulty` | string | For tutorials: `Beginner`, `Intermediate`, or `Advanced`. Shown in tutorial listings. | -| `reviewed` | string | `YYYY-MM-DD` of last explicit end-to-end review. | -| `summary` | string | Short description rendered below the page title on the page itself. | -| `noindex` | boolean | Adds `noindex` to the page — use for deprecated/legacy content. | -| `chatbot_deprioritize` | boolean | De-prioritizes the page in Support AI responses. Companion to `noindex`. | -| `canonical` | string | Override the `` URL. | -| `hideChildren` | boolean | Collapses this nav group to a single link to the index page. | -| `feedback` | boolean | Show/hide the feedback prompt. Defaults to `true`. | +| Field | Type | Description | +| ---------------------- | ------- | ----------------------------------------------------------------------------------------------------- | +| `sidebar.order` | number | Sort order in the left nav. Lower = higher. | +| `sidebar.label` | string | Override the nav label (defaults to `title`). | +| `sidebar.hidden` | boolean | Hide from nav but keep the page accessible. | +| `products` | array | Related directory entries by filename from `src/content/directory/`. | +| `tags` | array | Related keywords. Validated against allowlist in `src/schemas/tags.ts` — invalid tags fail the build. | +| `difficulty` | string | For tutorials: `Beginner`, `Intermediate`, or `Advanced`. Shown in tutorial listings. | +| `reviewed` | string | `YYYY-MM-DD` of last explicit end-to-end review. | +| `summary` | string | Short description rendered below the page title on the page itself. | +| `noindex` | boolean | Adds `noindex` to the page — use for deprecated/legacy content. | +| `chatbot_deprioritize` | boolean | De-prioritizes the page in Support AI responses. Companion to `noindex`. | +| `canonical` | string | Override the `` URL. | +| `hideChildren` | boolean | Collapses this nav group to a single link to the index page. | +| `feedback` | boolean | Show/hide the feedback prompt. Defaults to `true`. | Example: @@ -93,15 +93,15 @@ Do not use Internet slang: no `tl;dr`, `IMO`, `FYI`. ### Jargon to avoid -| Instead of | Use | -| ---------- | --- | -| whitelist / blacklist | allowlist / blocklist | -| master / slave | primary / replica (or context-specific terms) | -| man-in-the-middle attack | on-path attack | -| sanity check | validate / smoke test | -| enable / disable (toggle) | turn on / turn off | -| out-of-the-box | default | -| on-prem | on-premises | +| Instead of | Use | +| ------------------------- | --------------------------------------------- | +| whitelist / blacklist | allowlist / blocklist | +| master / slave | primary / replica (or context-specific terms) | +| man-in-the-middle attack | on-path attack | +| sanity check | validate / smoke test | +| enable / disable (toggle) | turn on / turn off | +| out-of-the-box | default | +| on-prem | on-premises | ### Inclusive language @@ -111,23 +111,23 @@ Do not use racist, gendered, or ableist terminology. Use gender-neutral pronouns ## Terminology and UI interactions -| Use | Not | -| --- | --- | -| select | click | -| go to | navigate to | +| Use | Not | +| ------------------ | ---------------- | +| select | click | +| go to | navigate to | | turn on / turn off | enable / disable | -| refer to | see | +| refer to | see | --- ## Text formatting -| Element | Convention | -| ------- | ---------- | -| Clickable UI elements, menu items, button labels | **Bold**: select **Save**, go to **DNS** > **Records** | -| Code, paths, IPs, ports, HTTP verbs, status codes, filenames, config keys | `monospace` | -| Dropdown options the user selects *from* | *Italics* | -| Nested menu separators | **Bold** the words, plain `>` symbol: **Options** > **Settings** | +| Element | Convention | +| ------------------------------------------------------------------------- | ---------------------------------------------------------------- | +| Clickable UI elements, menu items, button labels | **Bold**: select **Save**, go to **DNS** > **Records** | +| Code, paths, IPs, ports, HTTP verbs, status codes, filenames, config keys | `monospace` | +| Dropdown options the user selects _from_ | _Italics_ | +| Nested menu separators | **Bold** the words, plain `>` symbol: **Options** > **Settings** | Things that get monospace: IP addresses and ranges, port numbers, API commands (`GET`, `POST`), terminal commands (`wrangler login`), file paths, filenames and extensions (`wrangler.toml`), config keys, data types (`string`, `int64`), environment variable names, HTTP headers (`Content-Length`), HTTP status codes (`400`, `200`), URLs used as input/output, DNS record types (`AAAA`). @@ -146,15 +146,15 @@ Do not use italics for toggle states — "enabled" and "disabled" should not be Common terms: -| Correct | Incorrect | -| ------- | --------- | -| DDoS | DDOS, ddos | -| SSL | ssl | -| TLS | tls | -| WAF | waf | -| CAPTCHA | Captcha, captcha | -| Zero Trust | zero trust | -| Internet | internet | +| Correct | Incorrect | +| ---------- | ---------------- | +| DDoS | DDOS, ddos | +| SSL | ssl | +| TLS | tls | +| WAF | waf | +| CAPTCHA | Captcha, captcha | +| Zero Trust | zero trust | +| Internet | internet | --- @@ -167,6 +167,7 @@ Common terms: - Descriptive link text — never "here", "this page", "read more", "click here" Standard phrasing: + - `For more information, refer to [Page Title](/path/).` - `To , refer to [Section Title](/path/).` @@ -191,11 +192,13 @@ Do not use: "Learn more about...", "To read more...", "refer the [Page] page/doc Use numbered lists for **procedures** (sequential steps). Use bullet points for **facts, data, or options** (unordered). Do not use bullet points for: + - Processes or steps (use a numbered list) - Fewer than three items (write a sentence instead) - Items longer than three lines each (break into subsections) Bullet point rules: + - All items in a list must be parallel (same grammatical form). - Do not punctuate bullets unless each item is a full sentence. - Aim for 3–6 items; the "six-pack rule" — no more than six bullets, each six words or fewer, is a good default. @@ -282,59 +285,59 @@ Package install commands must use `PackageManagers`. All components are imported from `~/components`. Imports must appear after the frontmatter block. **Mandatory component usage** — do not use bare fences for these: + - Workers JS/TS examples → `TypeScriptExample` - Wrangler config → `WranglerConfig` (TOML input, use `$today` for `compatibility_date`) - Package install/exec commands → `PackageManagers` - Multi-step procedures → `Steps` - Dashboard navigation steps → `DashButton` (not bare links) -| Component | Purpose | -| --------- | ------- | -| `Render` | Embed a reusable partial from `src/content/partials/{product}/{file}.mdx` | -| `TypeScriptExample` | Workers TS example with auto-generated JS tab | -| `WranglerConfig` | Wrangler config in synced TOML + JSON tabs | -| `PackageManagers` | Package install/exec command across npm, yarn, pnpm | -| `WranglerCommand` | Auto-generated full Wrangler command reference | -| `WranglerNamespace` | Auto-generated Wrangler namespace command listing | -| `Tabs` / `TabItem` | Switchable tabs (`syncKey="dashPlusAPI"` or `"workersExamples"`) | -| `Steps` | Visual numbered procedure wrapper | -| `Details` | Collapsible section for supplementary content | -| `FileTree` | File and directory tree display | -| `Width` | Constrain content to `"large"` (75%), `"medium"` (50%), or `"small"` (25%) width | -| `Plan` | Plan availability badge (`type="all"`, `"paid"`, `"pro"`, `"business"`, `"add-on"`) | -| `FeatureTable` | Feature availability by plan from `src/content/plans/` (dot-notation `id`) | -| `ProductFeatures` | Full feature list for a product from `src/content/plans/` | -| `ProductChangelog` | Inline changelog entries for a product or area | -| `ProductAvailabilityText` | Inline lifecycle status (Beta, Alpha) — renders nothing for GA | -| `Feature` | Feature card for product overview pages | -| `RelatedProduct` | Related product card with icon for overview pages | -| `GlossaryTooltip` | Hover tooltip from `src/content/glossary/` | -| `GlossaryDefinition` | Inline glossary definition | -| `Glossary` | Full product glossary table | -| `InlineBadge` | Inline status badge — **avoid**, prefer `Badge` in headings or sidebar frontmatter | -| `Badge` | Coloured status badge (`Beta`, `New`, `Deprecated`) for headings and sidebar | -| `LinkButton` | Styled link button (`variant="primary"`, `"secondary"`, `"minimal"`) | -| `Card` / `LinkTitleCard` / `ListCard` | Styled card containers for overview and navigation pages | -| `LinkCard` / `CardGrid` | Starlight link cards, optionally in a grid | -| `DashButton` | Button linking to a validated dashboard deeplink | -| `GitHubCode` | Fetch and display a file from a Cloudflare GitHub repo (use full commit hash) | -| `DirectoryListing` | Auto-generated child page listing for nav/overview pages | -| `ListTutorials` | Auto-generated tutorial table for the current product | -| `ResourcesBySelector` | Filterable list of pages by `pcx_content_type`, tags, or products | -| `ExternalResources` | Demo apps or videos from central YAML collections, filtered by tags/products | -| `PublicStats` | Inline live statistic (data centers, bandwidth, etc.) | -| `YouTube` | Embed a YouTube video by ID | -| `YouTubeVideos` | Grid of YouTube videos for a product from `src/content/videos/` | -| `Stream` | Embed a Cloudflare Stream video by ID or collection file | -| `APIRequest` | Generate a `curl` command from the Cloudflare OpenAPI schema | -| `CURL` | Generate a `curl` command for arbitrary URLs | -| `PagesBuildPreset` | Pages framework build preset details | -| `RuleID` | Copyable rule ID (WAF / security rules) | -| `SubtractIPCalculator` | Interactive IP range subtraction calculator | -| `AvailableNotifications` | List available notification types for a product | -| `AnchorHeading` | Heading with custom anchor ID — for use inside components/non-MDX files | -| `Description` | Description block rendered below the page title | -| `Markdown` | Render a Markdown string inside JSX — primarily for formatted partial variables | +| Component | Purpose | +| ------------------------------------- | ----------------------------------------------------------------------------------- | +| `Render` | Embed a reusable partial from `src/content/partials/{product}/{file}.mdx` | +| `TypeScriptExample` | Workers TS example with auto-generated JS tab | +| `WranglerConfig` | Wrangler config in synced TOML + JSON tabs | +| `PackageManagers` | Package install/exec command across npm, yarn, pnpm | +| `WranglerCommand` | Auto-generated full Wrangler command reference | +| `WranglerNamespace` | Auto-generated Wrangler namespace command listing | +| `Tabs` / `TabItem` | Switchable tabs (`syncKey="dashPlusAPI"` or `"workersExamples"`) | +| `Steps` | Visual numbered procedure wrapper | +| `Details` | Collapsible section for supplementary content | +| `FileTree` | File and directory tree display | +| `Width` | Constrain content to `"large"` (75%), `"medium"` (50%), or `"small"` (25%) width | +| `Plan` | Plan availability badge (`type="all"`, `"paid"`, `"pro"`, `"business"`, `"add-on"`) | +| `FeatureTable` | Feature availability by plan from `src/content/plans/` (dot-notation `id`) | +| `ProductFeatures` | Full feature list for a product from `src/content/plans/` | +| `ProductChangelog` | Inline changelog entries for a product or area | +| `ProductAvailabilityText` | Inline lifecycle status (Beta, Alpha) — renders nothing for GA | +| `Feature` | Feature card for product overview pages | +| `RelatedProduct` | Related product card with icon for overview pages | +| `GlossaryTooltip` | Hover tooltip from `src/content/glossary/` | +| `GlossaryDefinition` | Inline glossary definition | +| `Glossary` | Full product glossary table | +| `InlineBadge` | Inline status badge — **avoid**, prefer `Badge` in headings or sidebar frontmatter | +| `Badge` | Coloured status badge (`Beta`, `New`, `Deprecated`) for headings and sidebar | +| `LinkButton` | Styled link button (`variant="primary"`, `"secondary"`, `"minimal"`) | +| `Card` / `LinkTitleCard` / `ListCard` | Styled card containers for overview and navigation pages | +| `LinkCard` / `CardGrid` | Starlight link cards, optionally in a grid | +| `DashButton` | Button linking to a validated dashboard deeplink | +| `GitHubCode` | Fetch and display a file from a Cloudflare GitHub repo (use full commit hash) | +| `DirectoryListing` | Auto-generated child page listing for nav/overview pages | +| `ListTutorials` | Auto-generated tutorial table for the current product | +| `ResourcesBySelector` | Filterable list of pages by `pcx_content_type`, tags, or products | +| `PublicStats` | Inline live statistic (data centers, bandwidth, etc.) | +| `YouTube` | Embed a YouTube video by ID | +| `YouTubeVideos` | Grid of YouTube videos for a product from `src/content/videos/` | +| `Stream` | Embed a Cloudflare Stream video by ID or collection file | +| `APIRequest` | Generate a `curl` command from the Cloudflare OpenAPI schema | +| `CURL` | Generate a `curl` command for arbitrary URLs | +| `PagesBuildPreset` | Pages framework build preset details | +| `RuleID` | Copyable rule ID (WAF / security rules) | +| `SubtractIPCalculator` | Interactive IP range subtraction calculator | +| `AvailableNotifications` | List available notification types for a product | +| `AnchorHeading` | Heading with custom anchor ID — for use inside components/non-MDX files | +| `Description` | Description block rendered below the page title | +| `Markdown` | Render a Markdown string inside JSX — primarily for formatted partial variables | For full props, examples, and edge cases, see `.agents/references/components.md`. @@ -357,6 +360,7 @@ For best practices or opinionated recommendations outside the main content. Defa ``` Usage rules: + - Use `note` for supplementary info that cannot be integrated into prose. - Use `caution` for actions that could break functionality or impact security. - Use `tip` for best practices and opinionated recommendations. @@ -395,6 +399,7 @@ Use screenshots sparingly — they have a high maintenance cost because UI chang Exception: use screenshots freely in changelog entries (accepted as point-in-time references). Guidelines: + - Maintain original aspect ratio. - Width 500–600 px, resolution 72 dpi. - Do not include sensitive information (redact if needed). @@ -406,6 +411,7 @@ Guidelines: ``` Alt text rules: + - Describe what the image shows and why it matters (under ~150 characters). - Do not start with "Image of" or "Screenshot of". - For purely decorative images, use empty alt text: `![]()`. @@ -430,11 +436,11 @@ In diagrams: do not use color as the only way to distinguish elements — also u Use these reserved values in examples — they are safe and will not resolve to live origins: -| Type | Values | -| ---- | ------ | -| Domains | `example.com`, `example.org`, `myappexample.com` | -| IPv4 ranges | `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24` | -| URL placeholders | ``, ``, `` | +| Type | Values | +| ------------------- | ---------------------------------------------------- | +| Domains | `example.com`, `example.org`, `myappexample.com` | +| IPv4 ranges | `192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24` | +| URL placeholders | ``, ``, `` | | API shell variables | `$ZONE_ID`, `$CLOUDFLARE_API_TOKEN` (in curl blocks) | Use angle brackets with `ALL_CAPS_UNDERSCORES` for variable placeholders in non-API contexts. In API examples (curl blocks, `APIRequest` component), use `$VARIABLE_NAME` shell variable format. diff --git a/src/components/ExternalResources.astro b/src/components/ExternalResources.astro deleted file mode 100644 index f8a7e0ef0af5bf0..000000000000000 --- a/src/components/ExternalResources.astro +++ /dev/null @@ -1,51 +0,0 @@ ---- -import { getCollection } from "astro:content"; -import { z } from "astro/zod"; - -import { process } from "~/util/rehype"; -import rehypeExternalLinks from "~/plugins/rehype/external-links"; - -type Props = z.infer; - -const props = z.object({ - type: z.enum(["apps", "videos"]), - tags: z.string().array().optional(), - products: z.string().array().optional(), - cloudflareOnly: z.boolean().default(true), -}); - -const { type, tags, products, cloudflareOnly } = props.parse(Astro.props); - -const resources = await getCollection(type, (e) => { - return ( - (cloudflareOnly ? e.data.cloudflare : true) && - (tags ? e.data.tags?.some((v: string) => tags.includes(v)) : true) && - (products - ? e.data.products?.some((v: string) => products.includes(v)) - : true) - ); -}); - -if (!resources) { - throw new Error("Failed to load data"); -} - -resources.sort((a, b) => Number(b.data.updated) - Number(a.data.updated)); ---- - -
    - { - resources.map(async (e) => { - const anchor = await process(`${e.id}:`, [ - rehypeExternalLinks, - ]); - - return ( -
  • - - {e.data.description} -
  • - ); - }) - } -
diff --git a/src/components/index.ts b/src/components/index.ts index f99215e898a3558..a2f550060ff960f 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -19,7 +19,6 @@ export { default as Description } from "./Description.astro"; export { default as Details } from "./Details.astro"; export { default as DirectoryListing } from "./DirectoryListing.astro"; export { default as Example } from "./Example.astro"; -export { default as ExternalResources } from "./ExternalResources.astro"; export { default as ExtraFlagDetails } from "./ExtraFlagDetails.astro"; export { default as Feature } from "./Feature.astro"; export { default as FeatureTable } from "./FeatureTable.astro"; diff --git a/src/content.config.ts b/src/content.config.ts index f59db1ebfa43e9c..3d6e9129ecb06a5 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -12,7 +12,6 @@ import { granularControlApplicationsCollectionConfig } from "./content/collectio import { middlecacheLoader } from "./util/custom-loaders"; import { - appsSchema, catalogModelsSchema, changelogSchema, baseSchema, @@ -113,10 +112,6 @@ export const collections = { loader: file("src/content/videos/index.yaml"), schema: videosSchema, }), - apps: defineCollection({ - loader: file("src/content/apps/index.yaml"), - schema: appsSchema, - }), "warp-releases": defineCollection({ loader: dataLoader("warp-releases"), schema: warpReleasesSchema, diff --git a/src/content/apps/index.yaml b/src/content/apps/index.yaml deleted file mode 100644 index cda33173e3c7618..000000000000000 --- a/src/content/apps/index.yaml +++ /dev/null @@ -1,219 +0,0 @@ -- link: https://github.com/harshil1712/nextjs-r2-demo - id: Upload Image to R2 starter - description: Upload images to Cloudflare R2 from a Next.js application. - tags: [NextJS] - products: [R2, Pages] - languages: [TypeScript] - author: harshil - cloudflare: true - updated: 2024-06-21 -- link: https://github.com/harshil1712/remix-d1-auth-template - id: Remix Authentication Starter - description: Implement authenticating to a Remix app and store user data in Cloudflare D1. - tags: [Remix] - products: [D1] - languages: [TypeScript] - author: harshil - cloudflare: true - updated: 2024-07-09 -- link: https://github.com/cloudflare/turnstile-demo-workers - id: Turnstile Demo - description: A simple demo with a Turnstile-protected form, using Cloudflare Workers. With the code in this repository, we demonstrate implicit rendering and explicit rendering. - tags: [] - products: [Turnstile, Workers] - languages: [JavaScript] - cloudflare: true - updated: 2024-02-15 -- link: https://github.com/cloudflare/doom-workers - id: Multiplayer Doom Workers - description: A WebAssembly Doom port with multiplayer support running on top of Cloudflare's global network using Workers, WebSockets, Pages, and Durable Objects. - tags: [WebSockets] - products: [Pages, Durable Objects, Workers] - languages: [JavaScript] - cloudflare: true - updated: 2023-06-15 -- link: https://github.com/cloudflare/hyperdrive-demo - id: Hyperdrive demo - description: A Remix app that connects to a database behind Cloudflare's Hyperdrive, making regional databases feel like they're globally distributed. - tags: [Remix] - products: [Hyperdrive] - languages: [TypeScript] - cloudflare: true - updated: 2024-04-04 -- link: https://github.com/cloudflare/d1-northwind - id: D1 Northwind Demo - description: This is a demo of the Northwind dataset, running on Cloudflare Workers, and D1 - Cloudflare's SQL database, running on SQLite. - tags: [Tailwind, React, Remix] - products: [Workers, D1] - languages: [TypeScript, SQL] - cloudflare: true - updated: 2023-07-12 -- link: https://github.com/cloudflare/workers-chat-demo - id: Cloudflare Workers Chat Demo - description: This is a demo app written on Cloudflare Workers utilizing Durable Objects to implement real-time chat with stored history. - tags: [WebSockets] - products: [Workers, Durable Objects] - languages: [JavaScript] - cloudflare: true - updated: 2024-03-05 -- link: https://github.com/cloudflare/js-rpc-and-entrypoints-demo - id: JavaScript-native RPC on Cloudflare Workers <> Named Entrypoints - description: This is a collection of examples of communicating between multiple Cloudflare Workers using the remote-procedure call (RPC) system that is built into the Workers runtime. - tags: [RPC, Discord] - products: [Workers, D1, Access] - languages: [TypeScript] - cloudflare: true - updated: 2024-04-16 -- link: https://github.com/harshil1712/jobs-at-conf-demo - id: Jobs At Conf - description: A job lisiting website to add jobs you find at in-person conferences. Built with Cloudflare Pages, R2, D1, Queues, and Workers AI. - tags: [Next.js] - products: [D1, R2, Workers AI, Queues, Pages] - languages: [TypeScript] - author: harshil - cloudflare: true - updated: 2024-07-29 -- link: https://github.com/cloudflare/queues-web-crawler - id: Queues Web Crawler - description: An example use-case for Queues, a web crawler built on Browser Run and Puppeteer. The crawler finds the number of links to Cloudflare.com on the site, and archives a screenshot to Workers KV. - tags: [] - products: [KV, Browser Run, Workers, Pages, Queues] - languages: [TypeScript] - cloudflare: true - updated: 2023-06-15 -- link: https://github.com/cloudflare/workers-for-platforms-example - id: Workers for Platforms Example Project - description: Explore how you could manage thousands of Workers with a single Cloudflare Workers account. - tags: [Hono] - products: [D1, Workers, Workers for Platforms] - languages: [TypeScript] - cloudflare: true - updated: 2024-04-03 -- link: https://github.com/cloudflare/dmarc-email-worker - id: DMARC Email Worker - description: A Cloudflare worker script to process incoming DMARC reports, store them, and produce analytics. - tags: [] - products: [R2, Workers, Email Workers] - languages: [TypeScript] - cloudflare: true - updated: 2023-03-17 -- link: https://github.com/cloudflare/pages-fns-with-wasm-demo - id: Pages Functions with WebAssembly - description: This is a demo application that exemplifies the use of Wasm module imports inside Pages Functions code. - tags: [] - products: [Pages] - languages: [Rust] - cloudflare: true - updated: 2023-03-22 -- link: https://github.com/cloudflare/orange - id: Orange Meets - description: Orange Meets is a demo WebRTC application built using Cloudflare Realtime. - tags: [] - products: [Realtime] - languages: [TypeScript] - cloudflare: true - updated: 2024-07-05 -- link: https://github.com/cloudflare/calls-examples/tree/main/whip-whep-server - id: WHIP-WHEP Server - description: WHIP and WHEP server implemented on top of Realtime API. - tags: [] - products: [Realtime] - languages: [TypeScript] - cloudflare: true - updated: 2022-06-12 -- link: https://github.com/cloudflare/calls-examples/tree/main/echo - id: Realtime Echo Demo - description: Demonstrates a local stream alongside a remote echo stream. - tags: [] - products: [Realtime] - languages: [JavaScript] - cloudflare: true - updated: 2025-05-10 -- link: https://github.com/cloudflare/calls-examples/tree/main/echo-datachannels - id: Realtime DataChannel Test - description: This example establishes two datachannels, one publishes data and the other one subscribes, the test measures how fast a message travels to and from the server. - tags: [] - products: [Realtime] - languages: [JavaScript] - cloudflare: true - updated: 2022-06-04 -- link: https://github.com/cloudflare/wildebeest - id: Wildebeest - description: Wildebeest is an ActivityPub and Mastodon-compatible server whose goal is to allow anyone to operate their Fediverse server and identity on their domain without needing to keep infrastructure, with minimal setup and maintenance, and running in minutes. - tags: [] - products: [Workers, Pages, Durable Objects, Queues, D1, Access, Images] - languages: [TypeScript] - cloudflare: true - updated: 2023-07-31 -- link: https://github.com/cloudflare/workers-access-external-auth-example - id: Access External Auth Rule Example Worker - description: This is a worker that allows you to quickly setup an external evalutation rule in Cloudflare Access. - tags: [] - products: [Workers, Access] - languages: [JavaScript] - cloudflare: true - updated: 2022-08-01 -- link: https://github.com/lauragift21/staff-directory - id: Staff Directory demo - description: Built using the powerful combination of HonoX for backend logic, Cloudflare Pages for fast and secure hosting, and Cloudflare D1 for seamless database management. - tags: [Hono] - products: [Pages, D1] - languages: [TypeScript] - author: gift - cloudflare: true - updated: 2024-03-18 -- link: https://github.com/atinux/atidraw - id: Atidraw - description: A web application made with Nuxt that lets you to create, enhance, and share your drawings with the world. Harnessing the power of Cloudflare R2 and Cloudflare AI to store and enhance your drawings. - tags: [Nuxt] - products: [Pages, R2, Workers AI] - languages: [TypeScript] - cloudflare: false - updated: 2024-08-12 -- link: https://github.com/atinux/atidone - id: Atidone - description: A full-stack application made with Nuxt, Cloudflare D1 and Authentication to store your todos on the web. - tags: [Nuxt] - products: [Pages, D1] - languages: [TypeScript] - cloudflare: false - updated: 2024-08-12 -- link: https://github.com/atinux/atinotes - id: Atinotes - description: Store Markdown notes in Cloudflare KV with this full-stack application made with Nuxt & deployed on Cloudflare Pages. - tags: [Nuxt] - products: [Pages, KV] - languages: [TypeScript] - cloudflare: false - updated: 2024-08-12 -- link: https://github.com/Flosciante/nuxt-image-gallery - id: Nuxt Image Gallery - description: A web application to create an image gallery with Cloudflare R2 with a built-in image editor. - tags: [Nuxt] - products: [Pages, R2] - languages: [TypeScript] - cloudflare: false - updated: 2024-08-29 -- link: https://github.com/ra-jeev/hub-chat - id: AI Chat - description: A full-stack application made with Nuxt to chat with various Cloudflare Workers AI LLM. - tags: [Nuxt] - products: [Pages, Workers AI] - languages: [TypeScript] - cloudflare: false - updated: 2024-08-29 -- link: https://github.com/atinux/flux-ai-image-generator - id: Flux Schnell Image Generator - description: An application to generate images with AI using Flux-1 Schnell and store them in Cloudflare R2. - tags: [Nuxt] - products: [Pages, Workers AI, R2] - languages: [TypeScript] - cloudflare: false - updated: 2024-10-07 -- link: https://github.com/cloudflare/templates/tree/main/d1-starter-sessions-api-template - id: Starter code for D1 Sessions API - description: An introduction to D1 Sessions API. This demo simulates purchase orders administration. - products: [Workers, D1] - languages: [TypeScript] - cloudflare: true - updated: 2025-03-31 diff --git a/src/content/docs/d1/demos.mdx b/src/content/docs/d1/demos.mdx index 58fe07361ec43bc..a36a0eab930184b 100644 --- a/src/content/docs/d1/demos.mdx +++ b/src/content/docs/d1/demos.mdx @@ -8,7 +8,7 @@ products: - d1 --- -import { ExternalResources, GlossaryTooltip, ResourcesBySelector } from "~/components" +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use D1 within your existing application and architecture. @@ -24,14 +24,15 @@ To simulate how read replication can improve a worst case latency scenario, sele You can find this in the **Database location hint** dropdown. ::: -## Demos - -Explore the following demo applications for D1. - - - ## Reference architectures Explore the following reference architectures that use D1: - + diff --git a/src/content/docs/durable-objects/demos.mdx b/src/content/docs/durable-objects/demos.mdx index 84f0d1234d8cb3c..511c665620046b2 100644 --- a/src/content/docs/durable-objects/demos.mdx +++ b/src/content/docs/durable-objects/demos.mdx @@ -8,18 +8,19 @@ products: - durable-objects --- -import { ExternalResources, GlossaryTooltip, ResourcesBySelector } from "~/components" +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use a Durable Object within your existing application and architecture. -## Demos - -Explore the following demo applications for Durable Objects. - - - ## Reference architectures Explore the following reference architectures that use Durable Objects: - + diff --git a/src/content/docs/email-routing/email-workers/demos.mdx b/src/content/docs/email-routing/email-workers/demos.mdx deleted file mode 100644 index e0a6c0bbb15a729..000000000000000 --- a/src/content/docs/email-routing/email-workers/demos.mdx +++ /dev/null @@ -1,19 +0,0 @@ ---- -pcx_content_type: navigation -title: Demos -description: Explore demo applications that show how to use Email Workers within your architecture. -sidebar: - order: 7 -products: - - email-routing ---- - -import { ExternalResources, GlossaryTooltip } from "~/components" - -Learn how you can use Email Workers within your existing architecture. - -## Demos - -Explore the following demo applications for Email Workers. - - \ No newline at end of file diff --git a/src/content/docs/hyperdrive/demos.mdx b/src/content/docs/hyperdrive/demos.mdx index 15da16f30e2b272..2b1244f782e634c 100644 --- a/src/content/docs/hyperdrive/demos.mdx +++ b/src/content/docs/hyperdrive/demos.mdx @@ -8,18 +8,19 @@ products: - hyperdrive --- -import { ExternalResources, GlossaryTooltip, ResourcesBySelector } from "~/components" +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use Hyperdrive within your existing application and architecture. -## Demos - -Explore the following demo applications for Hyperdrive. - - - ## Reference architectures Explore the following reference architectures that use Hyperdrive: - + diff --git a/src/content/docs/images/demos.mdx b/src/content/docs/images/demos.mdx index 7fc48a1c8717967..4d1cf7ccbb39a7b 100644 --- a/src/content/docs/images/demos.mdx +++ b/src/content/docs/images/demos.mdx @@ -8,20 +8,10 @@ products: - images --- -import { - ExternalResources, - GlossaryTooltip, - ResourcesBySelector, -} from "~/components"; +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use Images within your existing architecture. -## Demos - -Explore the following demo applications for Images. - - - ## Reference architectures Explore the following reference architectures that use Images: diff --git a/src/content/docs/kv/demos.mdx b/src/content/docs/kv/demos.mdx index a327a724f3efd5f..7b40d2002deaed4 100644 --- a/src/content/docs/kv/demos.mdx +++ b/src/content/docs/kv/demos.mdx @@ -8,18 +8,19 @@ products: - kv --- -import { ExternalResources, GlossaryTooltip, ResourcesBySelector } from "~/components" +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use KV within your existing application and architecture. -## Demo applications - -Explore the following demo applications for KV. - - - ## Reference architectures Explore the following reference architectures that use KV: - + diff --git a/src/content/docs/pages/demos.mdx b/src/content/docs/pages/demos.mdx index 15fe9ef5a3d8230..ec2661a02159629 100644 --- a/src/content/docs/pages/demos.mdx +++ b/src/content/docs/pages/demos.mdx @@ -8,20 +8,10 @@ products: - pages --- -import { - ExternalResources, - GlossaryTooltip, - ResourcesBySelector, -} from "~/components"; +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use Pages within your existing application and architecture. -## Demos - -Explore the following demo applications for Pages. - - - ## Reference architectures Explore the following reference architectures that use Pages: diff --git a/src/content/docs/pages/framework-guides/deploy-a-hono-site.mdx b/src/content/docs/pages/framework-guides/deploy-a-hono-site.mdx index e9b76decdc4697d..a41c8d13a6d9bf2 100644 --- a/src/content/docs/pages/framework-guides/deploy-a-hono-site.mdx +++ b/src/content/docs/pages/framework-guides/deploy-a-hono-site.mdx @@ -10,7 +10,6 @@ products: import { ResourcesBySelector, - ExternalResources, Render, TabItem, Tabs, @@ -89,12 +88,6 @@ For more tutorials involving Hono and Cloudflare Pages, refer to the following r products={["pages"]} /> -### Demo apps - -For demo applications using Hono and Cloudflare Pages, refer to the following resources: - - - ### Creator Interview diff --git a/src/content/docs/pages/framework-guides/deploy-a-nuxt-site.mdx b/src/content/docs/pages/framework-guides/deploy-a-nuxt-site.mdx index 8c91a367a090b1c..9fac0e63e6609e8 100644 --- a/src/content/docs/pages/framework-guides/deploy-a-nuxt-site.mdx +++ b/src/content/docs/pages/framework-guides/deploy-a-nuxt-site.mdx @@ -13,7 +13,6 @@ import { TabItem, Tabs, ResourcesBySelector, - ExternalResources, PackageManagers, YouTube, } from "~/components"; @@ -174,17 +173,3 @@ export default defineEventHandler(({ context }) => { product="pages" params={{ one: "Nuxt" }} /> - -## Related resources - -### Tutorials - -For more tutorials involving Nuxt, refer to the following resources: - - - -### Demo apps - -For demo applications using Nuxt, refer to the following resources: - - diff --git a/src/content/docs/r2/demos.mdx b/src/content/docs/r2/demos.mdx index 41fe5c21b2b69cc..d55493702160a2b 100644 --- a/src/content/docs/r2/demos.mdx +++ b/src/content/docs/r2/demos.mdx @@ -9,20 +9,10 @@ products: - r2 --- -import { - ExternalResources, - GlossaryTooltip, - ResourcesBySelector, -} from "~/components"; +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use R2 within your existing application and architecture. -## Demos - -Explore the following demo applications for R2. - - - ## Reference architectures Explore the following reference architectures that use R2: diff --git a/src/content/docs/realtime/sfu/demos.mdx b/src/content/docs/realtime/sfu/demos.mdx index 09c352023053e11..31498d3ee09e2ed 100644 --- a/src/content/docs/realtime/sfu/demos.mdx +++ b/src/content/docs/realtime/sfu/demos.mdx @@ -8,16 +8,10 @@ products: - realtime --- -import { ExternalResources, GlossaryTooltip } from "~/components" +import { GlossaryTooltip } from "~/components"; Learn how you can use Realtime within your existing architecture. -## Demos - -Explore the following demo applications for Realtime. - - - ## Interactive Demos ### Global SFU Network Visualization diff --git a/src/content/docs/style-guide/components/external-resources.mdx b/src/content/docs/style-guide/components/external-resources.mdx deleted file mode 100644 index a682de4fc91c1cc..000000000000000 --- a/src/content/docs/style-guide/components/external-resources.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: External resources -styleGuide: - component: ExternalResources -description: Display links to external learning resources. -products: - - style-guide ---- - -The `ExternalResources` component pulls from a central list of [apps](https://github.com/cloudflare/cloudflare-docs/blob/production/src/content/apps/index.yaml) and [videos](https://github.com/cloudflare/cloudflare-docs/blob/production/src/content/videos/index.yaml). - -## Import - -```mdx -import { ExternalResources } from "~/components"; -``` - -## Preview - -```mdx live -import { ExternalResources } from "~/components"; - -## Demo apps - - -## Videos - -``` - -## Props - -### `type` - -**required** - -**type:** `"apps" | "videos"` - -The type of resources to show, apps or videos. - -### `tags` - -**type:** `string[]` - -Filter resources down to those where the `tags` property contains any of these strings. - -To see a list of the available tags, and which pages are associated with them, refer to [this list](/style-guide/frontmatter/tags/). - -### `products` - -**type:** `string[]` - -Filter resources down to those where the `products` property contains any of these strings. - -### `cloudflareOnly` - -**type:** `boolean` - -**default:** `true` - -Filter resources down to those with `cloudflare: true`. diff --git a/src/content/docs/style-guide/frontmatter/tags.mdx b/src/content/docs/style-guide/frontmatter/tags.mdx index 95cf2d2120a08ed..9e9f672d8230f97 100644 --- a/src/content/docs/style-guide/frontmatter/tags.mdx +++ b/src/content/docs/style-guide/frontmatter/tags.mdx @@ -7,7 +7,7 @@ products: import { TagsUsage } from "~/components"; -Tags are currently used to filter content in the [`ExternalResources`](/style-guide/components/external-resources/) and the [`ResourcesBySelector`](/style-guide/components/resources-by-selector/) components. +Tags are currently used to filter content in the [`ResourcesBySelector`](/style-guide/components/resources-by-selector/) component. ## Example diff --git a/src/content/docs/turnstile/tutorials/index.mdx b/src/content/docs/turnstile/tutorials/index.mdx index b1eeb7797dedbbe..4b514058ff1d2d6 100644 --- a/src/content/docs/turnstile/tutorials/index.mdx +++ b/src/content/docs/turnstile/tutorials/index.mdx @@ -7,19 +7,10 @@ products: hideChildren: true sidebar: order: 7 - --- -import { GlossaryTooltip, ListTutorials, ExternalResources, Render } from "~/components" +import { GlossaryTooltip, ListTutorials, Render } from "~/components"; View tutorials to help you get started with Turnstile. - -## Demo - -Learn how you can use Turnstile within your existing application. - -Explore the following demo applications for Turnstile. - - diff --git a/src/content/docs/workers-ai/guides/demos-architectures.mdx b/src/content/docs/workers-ai/guides/demos-architectures.mdx index 50548ab5b927ede..d5494819708ca03 100644 --- a/src/content/docs/workers-ai/guides/demos-architectures.mdx +++ b/src/content/docs/workers-ai/guides/demos-architectures.mdx @@ -8,20 +8,10 @@ products: - workers-ai --- -import { - ExternalResources, - GlossaryTooltip, - ResourcesBySelector, -} from "~/components"; +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Workers AI can be used to build dynamic and performant services. The following demo applications and reference architectures showcase how to use Workers AI optimally within your architecture. -## Demos - -Explore the following demo applications for Workers AI. - - - ## Reference architectures Explore the following reference architectures that use Workers AI: diff --git a/src/content/docs/workers/demos.mdx b/src/content/docs/workers/demos.mdx index 489f32372689df7..a1ba5e1330ba164 100644 --- a/src/content/docs/workers/demos.mdx +++ b/src/content/docs/workers/demos.mdx @@ -8,18 +8,19 @@ products: - workers --- -import { ExternalResources, GlossaryTooltip, ResourcesBySelector } from "~/components" +import { GlossaryTooltip, ResourcesBySelector } from "~/components"; Learn how you can use Workers within your existing application and architecture. -## Demos - -Explore the following demo applications for Workers. - - - ## Reference architectures Explore the following reference architectures that use Workers: - + diff --git a/src/schemas/apps.ts b/src/schemas/apps.ts deleted file mode 100644 index 82135185c207e94..000000000000000 --- a/src/schemas/apps.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { z } from "astro/zod"; - -export const appsSchema = z - .object({ - id: z.string(), - link: z.url(), - description: z.string(), - tags: z.string().array().optional(), - products: z.string().array(), - languages: z.string().array(), - cloudflare: z.boolean(), - author: z.string().optional(), - updated: z.coerce.date(), - }) - .strict(); diff --git a/src/schemas/index.ts b/src/schemas/index.ts index 51219d6f8ee398c..aed00ad59650699 100644 --- a/src/schemas/index.ts +++ b/src/schemas/index.ts @@ -1,4 +1,3 @@ -export * from "./apps"; export * from "./base"; export * from "./cloudflare-skills-manifest"; export * from "./cloudflare-mcp-server-card"; From f85656be12dbecb22b689ccef8d3716d9b046887 Mon Sep 17 00:00:00 2001 From: kodster28 Date: Mon, 18 May 2026 14:09:27 -0500 Subject: [PATCH 2/2] Add redirect --- public/__redirects | 1 + 1 file changed, 1 insertion(+) diff --git a/public/__redirects b/public/__redirects index 467567f7304471b..46ec25585d37860 100644 --- a/public/__redirects +++ b/public/__redirects @@ -684,6 +684,7 @@ /email-routing/enable-email-routing/ /email-routing/get-started/enable-email-routing/ 301 /email-routing/get-started/email-addresses/ /email-routing/setup/email-routing-addresses/ 301 /email-routing/known-limitations/ /email-routing/postmaster/ 301 +/email-routing/email-workers/demos/ /email-routing/email-workers/ 301 # firewall /firewall/api/cf-lists/ /waf/tools/lists/lists-api/ 301 /firewall/api/cf-lists/endpoints/ /waf/tools/lists/lists-api/endpoints/ 301