diff --git a/.changeset/green-wasps-follow.md b/.changeset/green-wasps-follow.md new file mode 100644 index 00000000..467c314e --- /dev/null +++ b/.changeset/green-wasps-follow.md @@ -0,0 +1,5 @@ +--- +"docs": minor +--- + +docs: add docs for the cli specifically diff --git a/.changeset/wide-lies-enter.md b/.changeset/wide-lies-enter.md new file mode 100644 index 00000000..1fc73cc6 --- /dev/null +++ b/.changeset/wide-lies-enter.md @@ -0,0 +1,5 @@ +--- +"docs": minor +--- + +docs: add docs for the Links addon, Redirects addon and enhance the docs in general diff --git a/README.md b/README.md index ec47716c..76cf75c2 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,59 @@
Everything you need to build a website with Strapi CMS
- -Read the documentation - - - +Everything you need to build a website with Strapi CMS
+ + + +
+
+If you click the link button it will open a modal in which you can manage your links.
+
+
diff --git a/packages/docs/docs/addons/links/getting-started/custom-field.md b/packages/docs/docs/addons/links/getting-started/custom-field.md
new file mode 100644
index 00000000..8dc583ff
--- /dev/null
+++ b/packages/docs/docs/addons/links/getting-started/custom-field.md
@@ -0,0 +1,10 @@
+---
+sidebar_label: 'Custom field'
+displayed_sidebar: webtoolsLinksSidebar
+slug: /addons/links/custom-field
+---
+
+# Custom field
+This addon introduces a new custom field which you can add to your content types. This field can be used in your content types to accommodate internal linking from one page to another.
+
+
diff --git a/packages/docs/docs/addons/links/getting-started/installation.md b/packages/docs/docs/addons/links/getting-started/installation.md
new file mode 100644
index 00000000..ac8c9051
--- /dev/null
+++ b/packages/docs/docs/addons/links/getting-started/installation.md
@@ -0,0 +1,62 @@
+---
+sidebar_label: 'Installation'
+displayed_sidebar: webtoolsLinksSidebar
+slug: /addons/links/installation
+---
+
+# ⏳ Installation
+
+:::prerequisites
+Complete installation requirements are the exact same as for Strapi itself and can be found in the Strapi documentation.
+
+**Additional Requirements:**
+- **Node.js**: Version 18 or higher
+- **Strapi**: Version 5.x
+- **Webtools**: Version 1.x
+:::
+
+:::caution
+This addon is part of the premium package of Webtools. You'll have to purchase a license key to download and use this package. Once you have your license key you can run the following command to setup your license in your project:
+
+```
+npx webtools-cli setup-license
+```
+
+To purchase a license, please visit the [PluginPal website](https://www.pluginpal.io/plugin/webtools).
+:::
+
+### Installation
+
+After you've setup your license you can install the addon like so:
+
+
+
+The schema of this link component can look something like this:
+
+```
+{
+ "collectionName": "components_core_links",
+ "info": {
+ "displayName": "Link"
+ },
+ "options": {},
+ "attributes": {
+ "Text": {
+ "type": "string"
+ "required": true,
+ },
+ "Link": {
+ "type": "customField",
+ "required": true,
+ "customField": "plugin::webtools-addon-links.link"
+ }
+ }
+}
+```
diff --git a/packages/docs/docs/addons/redirects/api/rest.md b/packages/docs/docs/addons/redirects/api/rest.md
new file mode 100644
index 00000000..6ef5dfec
--- /dev/null
+++ b/packages/docs/docs/addons/redirects/api/rest.md
@@ -0,0 +1,81 @@
+---
+sidebar_label: 'Rest API'
+displayed_sidebar: webtoolsRedirectsSidebar
+slug: /addons/redirects/api/rest
+---
+
+# REST API
+
+## Overview
+
+The plugin exposes a REST API endpoint that you can use to implement the redirects in your front-end of choice.
+
+### Authentication
+
+Use Public role or API Tokens as per Strapi defaults.
+
+
+
+## Create redirects
+
+With the button in the top right you can create new redirects.
+
+
+
+## Access
+After you've followed the steps above you can now access your sitemap through the REST api of strapi. It will be available at:
+
+http://localhost:1337/api/webtools/redirects.
+
+:::caution
+You might have to setup permissions for this endpoint to be accessible.
+:::
diff --git a/packages/docs/docs/addons/sitemap/getting-started/cli.md b/packages/docs/docs/addons/sitemap/getting-started/cli.md
index 52bb4258..f666eecc 100644
--- a/packages/docs/docs/addons/sitemap/getting-started/cli.md
+++ b/packages/docs/docs/addons/sitemap/getting-started/cli.md
@@ -6,7 +6,8 @@ slug: /addons/sitemap/cli
# 📺 CLI
-This plugin comes with it's own `strapi-sitemap` CLI.
+This addon includes its own `strapi-sitemap` CLI. This is separate from the core Webtools CLI used during installation/enabling. For core Webtools installation and enabling content types, see the [Installation guide](/webtools/).
+
You can add it to your project like so:
```
diff --git a/packages/docs/docs/addons/sitemap/settings/hostname.md b/packages/docs/docs/addons/sitemap/settings/hostname.md
index c3de53a3..05442756 100644
--- a/packages/docs/docs/addons/sitemap/settings/hostname.md
+++ b/packages/docs/docs/addons/sitemap/settings/hostname.md
@@ -8,6 +8,10 @@ slug: /addons/sitemap/settings/hostname
The hostname is the URL of your website. It will be used as the base URL of all URLs added to the sitemap XML. It is required to generate the XML file.
+:::note
+This setting belongs to the Sitemap addon and is not the same as the core Webtools "Website URL" configuration used for permalinks. For the core setting, see [Website URL](/webtools/configuration/website-url).
+:::
+
###### Key: `hostname`
> `required:` YES | `type:` string | `default:` ''
diff --git a/packages/docs/docs/api/graphql.md b/packages/docs/docs/api/graphql.md
index 5e60a0ad..d40804e7 100644
--- a/packages/docs/docs/api/graphql.md
+++ b/packages/docs/docs/api/graphql.md
@@ -6,6 +6,7 @@ slug: /api/graphql
# GraphQL API
-As of writing this page there is no GraphQL API exposed by the Webtools core plugin. You might be able to still get most of it's functionality by querying the native Strapi GraphQL API, but this is not officially supported at this time.
+## Overview
+
+As of writing this page there is no GraphQL API exposed by the Webtools core plugin. You might be able to still get most of its functionality by querying the native Strapi GraphQL API, but this is not officially supported at this time.
-If you want this feature to happen, go get involved on Github! Webtools is a rapidly growing plugin suitte for Strapi and community feedback is always appreciated.
diff --git a/packages/docs/docs/api/rest.md b/packages/docs/docs/api/rest.md
index c4810ef9..99848ef6 100644
--- a/packages/docs/docs/api/rest.md
+++ b/packages/docs/docs/api/rest.md
@@ -6,8 +6,14 @@ slug: /api/rest
# REST API
+## Overview
+
The plugin exposes a couple of REST API endpoints that you can use to implement Webtools in your front-end of choice.
+### Authentication
+
+Use Public role or API Tokens as per Strapi defaults.
+
## Router
Probably the most important endpoint of the plugin is it's router endpoint.
@@ -58,6 +64,18 @@ This endpoint is just a native findMany endpoint exposed to query multiple URL a
As it's a native findMany endpoint you can use all the parameters you're used to like `populate`, `filters` and `fields`.
+### Lookup Single URL
+
+To find a specific URL alias, use Strapi's filter syntax:
+
+```bash
+GET http://localhost:1337/api/webtools/url-alias?filters[url_path][$eq]=/your-path
+```
+
+:::warning Filter Syntax
+The query parameter `?url_path=` does not work correctly. Always use the full filter syntax: `?filters[url_path][$eq]=` to lookup specific URLs.
+:::
+
+
+
+
+:::tip Keyboard shortcuts
+In the selector you can use:
+
+- Space — toggle selection
+- a — toggle all
+- i — invert selection
+- Enter — proceed
+:::
+
### Enabling
-The installer wizard will ask you which content-types you want to enable. Select the content types that you consider to be web-pages in your website front-end. Each content-type you select will get it's own unique URL which can be used on the front-end. Read more about enabling content-types in the [usage documentation](/webtools/usage).
+The installer wizard will ask you which content types you want to enable. Select the content types that you consider to be web pages in your website front-end. Each content type you select will get its own unique URL which can be used on the front-end. Read more about enabling content types in the [usage documentation](/webtools/usage).
### Building
@@ -45,3 +65,7 @@ After successful installation you have to rebuild the admin UI so it'll include
+### Post-install checklist
+
+- Enable Webtools per content type → see [Usage](/webtools/usage)
+- Review Roles & Permissions → see [Permissions](/webtools/permissions)
diff --git a/packages/docs/docs/getting-started/permissions.md b/packages/docs/docs/getting-started/permissions.md
new file mode 100644
index 00000000..15e3d3b9
--- /dev/null
+++ b/packages/docs/docs/getting-started/permissions.md
@@ -0,0 +1,75 @@
+---
+sidebar_label: 'Permissions'
+displayed_sidebar: webtoolsSidebar
+slug: /permissions
+---
+
+# 🔐 Role-Based Access Control (RBAC)
+
+After installation, review Webtools permissions per role in Settings so your front-end can access the required endpoints.
+
+Without the proper permissions, you'll get a **403 Forbidden** error when calling:
+- `GET /api/webtools/router?path=…`
+- `GET /api/webtools/url-alias`
+
+Below are the three permission categories you need to configure.
+
+---
+
+## 1. Content-Type "find" permissions
+
+For each content-type where you've enabled Webtools, you need to open up the standard **find** permission.
+
+1. Go to **Strapi Admin → Settings → Users & Permissions plugin → Roles**.
+2. Select the role (e.g., **Public**).
+3. Under **Application** you'll find your enabled content-types (e.g., `page`, `article`).
+4. Check **Find** (and **Find One** if desired).
+5. Click **Save**.
+
+
+
+---
+
+## 2. Webtools plugin permissions
+
+Enable the Webtools endpoints for your front-end:
+
+1. In the same role (e.g., **Public**) scroll to the **Webtools** section.
+2. Check:
+ - **Router: find**
+ - **URL Alias: find**
+3. Click **Save**.
+
+
+
+---
+
+## 3. Admin Panel roles
+
+Want your editors/admins to manage Webtools settings? Configure:
+
+1. Go to **Strapi Admin → Settings → Administration Panel → Roles**.
+2. Choose the role (e.g., **Author**).
+3. Under **Plugins** → **Webtools** enable the permissions you need:
+ - **Access the URL alias list**
+ - **Access the URL alias patterns**
+ - **Access the URL alias sidebar**
+4. Click **Save**.
+
+
+
+---
+
+## Test your permissions
+
+After saving:
+
+```bash
+curl "http://localhost:1337/api/webtools/router?path=/about-page"
+```
+
+You should now receive data instead of a 403 error.
+
+:::tip
+Restart Strapi after making changes and clear the cache if necessary.
+:::
diff --git a/packages/docs/docs/getting-started/troubleshooting.md b/packages/docs/docs/getting-started/troubleshooting.md
new file mode 100644
index 00000000..2e1017ab
--- /dev/null
+++ b/packages/docs/docs/getting-started/troubleshooting.md
@@ -0,0 +1,143 @@
+---
+sidebar_label: 'Troubleshooting'
+displayed_sidebar: webtoolsSidebar
+slug: /troubleshooting
+---
+
+# 🔧 Troubleshooting
+
+Common issues and solutions when working with Strapi Webtools.
+
+## Installation Issues
+
+### Node.js version error
+```
+The engine "node" is incompatible with this module. Expected version ">=18"
+```
+
+**Solution:** Update Node.js to version 18 or higher:
+```bash
+nvm install 18
+nvm use 18
+```
+
+### Peer dependency warnings
+Multiple warnings about unmet peer dependencies during installation.
+
+**Solution:** These warnings are normal and won't affect functionality. The plugin will work correctly despite these warnings.
+
+## Pattern & URL Issues
+
+### URL is incorrect
+The Webtools plugin applies it's own slugify function to your URLs. That means that if you have already have a slugified field, which you then use in an URL pattern, it will be slugified again, potentially causing incorrect URLs. If you want you can disable the slugify function of Webtools by updating the slugify configuration.
+
+See [slugify configuration docs](/configuration/slugify)
+
+### Can't select field in pattern
+When creating URL patterns, some content types don't show field options.
+
+**Possible causes:**
+- Content type has internationalization enabled
+- Content type has no suitable fields for URL generation
+- Browser cache issue - try hard refresh (Ctrl+R)
+
+### Locale required
+Some content types require locale selection when creating patterns.
+
+**Explanation:** Multi-language content types need locale-specific patterns. This is normal behavior for internationalized content.
+
+### Multiple content type bundles
+Content types can be selected multiple times in sitemap bundles.
+
+**Use case:** Each bundle can have different settings (change frequency, priority, locale-specific configurations).
+
+## Sitemap Issues
+
+### Invalid URL error (500)
+```
+TypeError [ERR_INVALID_URL]: Invalid URL
+```
+
+**Solution:** Ensure hostname includes protocol prefix:
+- ✅ Correct: `http://localhost:1337`
+- ❌ Wrong: `localhost:1337`
+
+### Generate sitemap button stuck
+UI becomes unresponsive after sitemap generation error (usually caused by incorrect hostname format).
+
+**Solution:** Hard refresh browser (Ctrl+R) to reset the interface state.
+
+### Router permissions error
+500 error when generating sitemap, even with correct URL format.
+
+**Solution:** Enable router permissions in **Settings > Users & Permissions > Public**:
+- `webtools.router.find`
+
+## API Issues
+
+### Returns all URLs instead of one
+```bash
+curl "localhost:1337/api/webtools/url-alias?url_path=/my-path"
+# Returns all URLs, not just the requested one
+```
+
+**Solution:** Use Strapi's filter syntax:
+```bash
+curl "localhost:1337/api/webtools/url-alias?filters[url_path][$eq]=/my-path"
+```
+
+### 403 forbidden error
+```json
+{"error": {"status": 403, "name": "ForbiddenError"}}
+```
+
+**Solution:** Enable webtools permissions in **Settings > Users & Permissions > Public**:
+- `webtools.url-alias.find`
+- `webtools.router.find`
+
+### CORS Errors in Development
+```
+Origin null is not allowed by Access-Control-Allow-Origin
+```
+
+**Solution:** Add development origins to `config/middlewares.ts`:
+```js
+{
+ name: 'strapi::cors',
+ config: {
+ origin: [
+ 'http://localhost:3000',
+ 'file://',
+ 'null'
+ ]
+ }
+}
+```
+
+## Configuration Issues
+
+### Default Language URL Type
+Controls how the default locale appears in URLs:
+
+- **Disabled**: All URLs use same format `/path`
+- **Default language URL of bundles**: Default locale gets `/en/path`, others `/nl/path`
+- **Other**: Custom locale handling
+
+Choose based on your multilingual URL structure needs.
+
+### URL Bundle Configuration
+Each content type can have multiple bundles with different:
+- Change frequency (hourly, daily, monthly)
+- Priority settings (0.1 - 1.0)
+- Locale-specific configurations
+
+This allows fine-grained control over how different content appears in your sitemap.
+
+## Still Having Issues?
+
+1. **Check server logs** for detailed error messages
+2. **Restart Strapi** after configuration changes
+3. **Clear browser cache** if UI behaves unexpectedly
+4. **Verify permissions** are correctly set for all required endpoints
+
+If problems persist, check the [GitHub issues](https://github.com/pluginpal/strapi-webtools/issues) or create a new issue with your configuration details.
diff --git a/packages/docs/docs/getting-started/url-pattern.md b/packages/docs/docs/getting-started/url-pattern.md
index 689c2f15..49eef7d7 100644
--- a/packages/docs/docs/getting-started/url-pattern.md
+++ b/packages/docs/docs/getting-started/url-pattern.md
@@ -7,7 +7,9 @@ slug: /url-pattern
# 🔌 URL pattern
To create dynamic URLs this plugin uses **URL patterns**. The URL pattern will be used to generate unique URLs based on the data available.
-You can add URL patterns in the settings section of the plugin.
+You can add URL patterns in the settings section of the plugin. For configuration details and fallbacks, see [Default pattern](/webtools/configuration/default-pattern) and [Slugify](/webtools/configuration/slugify).
+
+
```
/pages/[my-title-field]
@@ -15,6 +17,10 @@ You can add URL patterns in the settings section of the plugin.
Fields can be injected in the pattern by escaping them with `[]`.
+:::tip Pattern discovery
+Type `[` in the pattern field to see all available fields from your content type.
+:::
+
The following field types are allowed in a pattern:
- `documentId`
@@ -23,4 +29,4 @@ The following field types are allowed in a pattern:
See below a screenshot of the URL pattern creation form in Strapi.
-
+
diff --git a/packages/docs/docs/getting-started/usage.md b/packages/docs/docs/getting-started/usage.md
index 25747f25..28eec2f7 100644
--- a/packages/docs/docs/getting-started/usage.md
+++ b/packages/docs/docs/getting-started/usage.md
@@ -5,8 +5,13 @@ slug: /usage
---
# 💡 Usage
+
This plugin is specifically designed for usage in Strapi managed websites. Hence the name **web**tools. The plugin offers a variety of functionalities which you'll have to manually enable.
+:::note
+Webtools needs to be enabled per content type. This is typically done during installation using the CLI selector, but can also be enabled later via the Admin interface or manually in the schema.
+:::
+
## Enabling Webtools
Once you enable Webtools for a content-type each entry of that type will get it's own unique URL alias. That alias can be used as the slug of your page in the front-end. To enable Webtools, you have a few options.
@@ -25,6 +30,12 @@ You can also use the Webtools CLI to enable Webtools for your content types. Thi
npx webtools-cli enable
```
+The CLI presents a selector where you can:
+- Choose content types to enable Webtools for
+- Optionally select addons to install (e.g. Sitemap)
+
+Keyboard shortcuts: Space (toggle), a (all), i (invert), Enter (confirm).
+
### Manually
:::tip
@@ -36,4 +47,18 @@ pluginOptions: {
enabled: true,
},
},
+```
:::
+
+## Workflow
+
+After enabling Webtools for your content types:
+
+1. **Create URL patterns** - See [URL pattern](/url-pattern) documentation
+2. **Bulk generate URLs** - Go to Webtools > All URLs to create aliases for existing content
+3. **Generate sitemap** - Configure and generate XML sitemap with your URLs
+
+:::tip Pattern discovery
+Type `[` in the pattern field to see available fields from your content type.
+:::
+
diff --git a/packages/docs/sidebars.ts b/packages/docs/sidebars.ts
index 6b34797b..fd65905e 100644
--- a/packages/docs/sidebars.ts
+++ b/packages/docs/sidebars.ts
@@ -24,8 +24,10 @@ const sidebars = {
items: [
"getting-started/installation",
"getting-started/usage",
- "getting-started/url-alias",
"getting-started/url-pattern",
+ "getting-started/url-alias",
+ "getting-started/permissions",
+ "getting-started/troubleshooting",
],
},
{
@@ -37,6 +39,16 @@ const sidebars = {
"api/graphql",
],
},
+ {
+ type: "category",
+ collapsed: false,
+ label: "📟 CLI",
+ items: [
+ "cli/install",
+ "cli/enable",
+ "cli/setup-license",
+ ],
+ },
{
type: "category",
collapsed: false,
@@ -48,6 +60,16 @@ const sidebars = {
label: "Sitemap addon",
href: '/addons/sitemap',
},
+ {
+ type: "link",
+ label: "Redirects addon",
+ href: '/addons/redirects',
+ },
+ {
+ type: "link",
+ label: "Links addon",
+ href: '/addons/links',
+ },
],
},
{
@@ -125,6 +147,83 @@ const sidebars = {
],
},
],
+
+ webtoolsRedirectsSidebar: [
+ {
+ type: "link",
+ label: "⬅️ Back to Webtools Core docs",
+ href: "/addons",
+ },
+ {
+ type: "category",
+ collapsed: false,
+ label: "🔀 Redirects addon",
+ items: [
+ {
+ type: "category",
+ collapsed: false,
+ label: "🚀 Getting Started",
+ items: [
+ "addons/redirects/getting-started/introduction",
+ "addons/redirects/getting-started/installation",
+ "addons/redirects/getting-started/usage",
+ ],
+ },
+ {
+ type: "category",
+ collapsed: false,
+ label: "📦 API",
+ items: [
+ "addons/redirects/api/rest",
+ ],
+ },
+ {
+ type: "category",
+ collapsed: false,
+ label: "🔧 Configuration",
+ items: [
+ "addons/redirects/configuration/introduction",
+ "addons/redirects/configuration/auto-generate",
+ "addons/redirects/configuration/default-status-code",
+ ],
+ },
+ ],
+ },
+ ],
+
+ webtoolsLinksSidebar: [
+ {
+ type: "link",
+ label: "⬅️ Back to Webtools Core docs",
+ href: "/addons",
+ },
+ {
+ type: "category",
+ collapsed: false,
+ label: "🔗 Links addon",
+ items: [
+ {
+ type: "category",
+ collapsed: false,
+ label: "🚀 Getting Started",
+ items: [
+ "addons/links/getting-started/introduction",
+ "addons/links/getting-started/installation",
+ "addons/links/getting-started/custom-field",
+ "addons/links/getting-started/ckeditor",
+ ],
+ },
+ {
+ type: "category",
+ collapsed: false,
+ label: "📦 API",
+ items: [
+ "addons/links/api/links-format",
+ ],
+ },
+ ],
+ },
+ ],
};
module.exports = sidebars;
diff --git a/packages/docs/static/img/assets/add_new_pattern.png b/packages/docs/static/img/assets/add_new_pattern.png
new file mode 100644
index 00000000..45b5b16a
Binary files /dev/null and b/packages/docs/static/img/assets/add_new_pattern.png differ
diff --git a/packages/docs/static/img/assets/addons/links/ckeditor-link-modal.png b/packages/docs/static/img/assets/addons/links/ckeditor-link-modal.png
new file mode 100644
index 00000000..53edb748
Binary files /dev/null and b/packages/docs/static/img/assets/addons/links/ckeditor-link-modal.png differ
diff --git a/packages/docs/static/img/assets/addons/links/ckeditor.png b/packages/docs/static/img/assets/addons/links/ckeditor.png
new file mode 100644
index 00000000..022c4b02
Binary files /dev/null and b/packages/docs/static/img/assets/addons/links/ckeditor.png differ
diff --git a/packages/docs/static/img/assets/addons/links/link-component.png b/packages/docs/static/img/assets/addons/links/link-component.png
new file mode 100644
index 00000000..e53c96f1
Binary files /dev/null and b/packages/docs/static/img/assets/addons/links/link-component.png differ
diff --git a/packages/docs/static/img/assets/addons/links/link-custom-field.png b/packages/docs/static/img/assets/addons/links/link-custom-field.png
new file mode 100644
index 00000000..81fa45af
Binary files /dev/null and b/packages/docs/static/img/assets/addons/links/link-custom-field.png differ
diff --git a/packages/docs/static/img/assets/addons/redirects/create-redirects.png b/packages/docs/static/img/assets/addons/redirects/create-redirects.png
new file mode 100644
index 00000000..f8090947
Binary files /dev/null and b/packages/docs/static/img/assets/addons/redirects/create-redirects.png differ
diff --git a/packages/docs/static/img/assets/addons/redirects/redirects-overview.png b/packages/docs/static/img/assets/addons/redirects/redirects-overview.png
new file mode 100644
index 00000000..9d9c26dc
Binary files /dev/null and b/packages/docs/static/img/assets/addons/redirects/redirects-overview.png differ
diff --git a/packages/docs/static/img/assets/install/cli-select-addons.png b/packages/docs/static/img/assets/install/cli-select-addons.png
new file mode 100644
index 00000000..dec338e3
Binary files /dev/null and b/packages/docs/static/img/assets/install/cli-select-addons.png differ
diff --git a/packages/docs/static/img/assets/install/cli-select-content-types.png b/packages/docs/static/img/assets/install/cli-select-content-types.png
new file mode 100644
index 00000000..333aafea
Binary files /dev/null and b/packages/docs/static/img/assets/install/cli-select-content-types.png differ
diff --git a/packages/docs/static/img/assets/permissions-admin-roles.png b/packages/docs/static/img/assets/permissions-admin-roles.png
new file mode 100644
index 00000000..afd0bb36
Binary files /dev/null and b/packages/docs/static/img/assets/permissions-admin-roles.png differ
diff --git a/packages/docs/static/img/assets/permissions-ct-find.png b/packages/docs/static/img/assets/permissions-ct-find.png
new file mode 100644
index 00000000..bed4c8ab
Binary files /dev/null and b/packages/docs/static/img/assets/permissions-ct-find.png differ
diff --git a/packages/docs/static/img/assets/permissions-webtools-find.png b/packages/docs/static/img/assets/permissions-webtools-find.png
new file mode 100644
index 00000000..eb51a951
Binary files /dev/null and b/packages/docs/static/img/assets/permissions-webtools-find.png differ
diff --git a/packages/docs/static/img/assets/url-pattern.png b/packages/docs/static/img/assets/url-pattern.png
deleted file mode 100644
index 1dc7a0f6..00000000
Binary files a/packages/docs/static/img/assets/url-pattern.png and /dev/null differ
diff --git a/packages/docs/static/img/assets/url_patterns.png b/packages/docs/static/img/assets/url_patterns.png
new file mode 100644
index 00000000..98eb1a3c
Binary files /dev/null and b/packages/docs/static/img/assets/url_patterns.png differ