diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index bc34e39bc24..a15303b2a3c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -83,7 +83,7 @@ repos:
files: ^superset-frontend/.*\.(js|jsx|ts|tsx)$
- id: eslint-docs
name: eslint (docs)
- entry: bash -c 'cd docs && FILES=$(echo "$@" | sed "s|docs/||g") && yarn eslint --fix --quiet $FILES'
+ entry: bash -c 'cd docs && FILES=$(printf "%s\n" "$@" | sed "s|^docs/||" | tr "\n" " ") && yarn eslint --fix --quiet $FILES'
language: system
pass_filenames: true
files: ^docs/.*\.(js|jsx|ts|tsx)$
diff --git a/README.md b/README.md
index e6dd708623d..e40a0b572b9 100644
--- a/README.md
+++ b/README.md
@@ -48,12 +48,16 @@ under the License.
A modern, enterprise-ready business intelligence web application.
+### Documentation
+
+- **[User Guide](https://superset.apache.org/user-docs/)** — For analysts and business users. Explore data, build charts, create dashboards, and connect databases.
+- **[Administrator Guide](https://superset.apache.org/admin-docs/)** — Install, configure, and operate Superset. Covers security, scaling, and database drivers.
+- **[Developer Guide](https://superset.apache.org/developer-docs/)** — Contribute to Superset or build on its REST API and extension framework.
+
[**Why Superset?**](#why-superset) |
[**Supported Databases**](#supported-databases) |
-[**Installation and Configuration**](#installation-and-configuration) |
[**Release Notes**](https://github.com/apache/superset/blob/master/RELEASING/README.md#release-notes-for-recent-releases) |
[**Get Involved**](#get-involved) |
-[**Contributor Guide**](#contributor-guide) |
[**Resources**](#resources) |
[**Organizations Using Superset**](https://superset.apache.org/inTheWild)
@@ -191,7 +195,7 @@ Try out Superset's [quickstart](https://superset.apache.org/docs/quickstart/) gu
## Contributor Guide
Interested in contributing? Check out our
-[Developer Portal](https://superset.apache.org/developer_portal/)
+[Developer Guide](https://superset.apache.org/developer-docs/)
to find resources around contributing along with a detailed guide on
how to set up a development environment.
diff --git a/docs/.claude/instructions.md b/docs/.claude/instructions.md
index 54db2f6f121..4e3b5ccd538 100644
--- a/docs/.claude/instructions.md
+++ b/docs/.claude/instructions.md
@@ -111,5 +111,5 @@ InteractiveMenu.parameters = {
- **Generator**: `docs/scripts/generate-superset-components.mjs`
- **Wrapper**: `docs/src/components/StorybookWrapper.jsx`
-- **Output**: `docs/developer_portal/components/`
+- **Output**: `docs/developer_docs/components/`
- **Stories**: `superset-frontend/packages/superset-ui-core/src/components/*/`
diff --git a/docs/.gitignore b/docs/.gitignore
index 37df51ce524..bdf3078bb36 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -33,7 +33,7 @@ docs/databases/
# Generated API documentation (regenerated at build time from openapi.json)
# Source of truth is static/resources/openapi.json
-docs/api/
+developer_docs/api/
# Generated component documentation MDX files (regenerated at build time)
# Source of truth is Storybook stories in superset-frontend/packages/superset-ui-core/src/components/
diff --git a/docs/DOCS_CLAUDE.md b/docs/DOCS_CLAUDE.md
index 039b701ba1d..1ac49462afe 100644
--- a/docs/DOCS_CLAUDE.md
+++ b/docs/DOCS_CLAUDE.md
@@ -416,7 +416,7 @@ If versions don't appear in dropdown:
- [Docusaurus Documentation](https://docusaurus.io/docs)
- [MDX Documentation](https://mdxjs.com/)
-- [Superset Developer Portal](https://superset.apache.org/developer_portal/)
+- [Superset Developer Docs](https://superset.apache.org/developer-docs/)
- [Main Superset Documentation](https://superset.apache.org/docs/intro)
## 📖 Real Examples and Patterns
diff --git a/docs/README.md b/docs/README.md
index dbf7a51238b..6f3a6b4902e 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -19,15 +19,16 @@ under the License.
This is the public documentation site for Superset, built using
[Docusaurus 3](https://docusaurus.io/). See the
-[Developer Portal](https://superset.apache.org/developer_portal/contributing/development-setup#documentation)
+[Developer Docs](https://superset.apache.org/developer-docs/contributing/development-setup#documentation)
for documentation on contributing to documentation.
## Version Management
-The Superset documentation site uses Docusaurus versioning with three independent versioned sections:
+The Superset documentation site uses Docusaurus versioning with four independent sections:
-- **Main Documentation** (`/docs/`) - Core Superset documentation
-- **Developer Portal** (`/developer_portal/`) - Developer guides and tutorials
+- **User Documentation** (`/user-docs/`) - End-user guides and tutorials
+- **Admin Documentation** (`/admin-docs/`) - Installation, configuration, and security
+- **Developer Docs** (`/developer-docs/`) - Developer guides, contributing, and extensions
- **Component Playground** (`/components/`) - Interactive component examples (currently disabled)
Each section maintains its own version history and can be versioned independently.
diff --git a/docs/docs/configuration/alerts-reports.mdx b/docs/admin_docs/configuration/alerts-reports.mdx
similarity index 96%
rename from docs/docs/configuration/alerts-reports.mdx
rename to docs/admin_docs/configuration/alerts-reports.mdx
index 9a6b1ff5732..8364b8e50ae 100644
--- a/docs/docs/configuration/alerts-reports.mdx
+++ b/docs/admin_docs/configuration/alerts-reports.mdx
@@ -20,12 +20,12 @@ Alerts and reports are disabled by default. To turn them on, you'll need to chan
#### In your `superset_config.py` or `superset_config_docker.py`
-- `"ALERT_REPORTS"` [feature flag](/docs/configuration/configuring-superset#feature-flags) must be turned to True.
+- `"ALERT_REPORTS"` [feature flag](/admin-docs/configuration/configuring-superset#feature-flags) must be turned to True.
- `beat_schedule` in CeleryConfig must contain schedule for `reports.scheduler`.
- At least one of those must be configured, depending on what you want to use:
- emails: `SMTP_*` settings
- Slack messages: `SLACK_API_TOKEN`
-- Users can customize the email subject by including date code placeholders, which will automatically be replaced with the corresponding UTC date when the email is sent. To enable this functionality, activate the `"DATE_FORMAT_IN_EMAIL_SUBJECT"` [feature flag](/docs/configuration/configuring-superset#feature-flags). This enables date formatting in email subjects, preventing all reporting emails from being grouped into the same thread (optional for the reporting feature).
+- Users can customize the email subject by including date code placeholders, which will automatically be replaced with the corresponding UTC date when the email is sent. To enable this functionality, activate the `"DATE_FORMAT_IN_EMAIL_SUBJECT"` [feature flag](/admin-docs/configuration/configuring-superset#feature-flags). This enables date formatting in email subjects, preventing all reporting emails from being grouped into the same thread (optional for the reporting feature).
- Use date codes from [strftime.org](https://strftime.org/) to create the email subject.
- If no date code is provided, the original string will be used as the email subject.
@@ -36,7 +36,7 @@ Screenshots will be taken but no messages actually sent as long as `ALERT_REPORT
#### In your `Dockerfile`
You'll need to extend the Superset image to include a headless browser. Your options include:
-- Use Playwright with Chrome: this is the recommended approach as of version 4.1.x or greater. A working example of a Dockerfile that installs these tools is provided under "Building your own production Docker image" on the [Docker Builds](/docs/installation/docker-builds#building-your-own-production-docker-image) page. Read the code comments there as you'll also need to change a feature flag in your config.
+- Use Playwright with Chrome: this is the recommended approach as of version 4.1.x or greater. A working example of a Dockerfile that installs these tools is provided under "Building your own production Docker image" on the [Docker Builds](/admin-docs/installation/docker-builds#building-your-own-production-docker-image) page. Read the code comments there as you'll also need to change a feature flag in your config.
- Use Firefox: you'll need to install geckodriver and Firefox.
- Use Chrome without Playwright: you'll need to install Chrome and set the value of `WEBDRIVER_TYPE` to `"chrome"` in your `superset_config.py`.
@@ -84,7 +84,7 @@ SLACK_API_RATE_LIMIT_RETRY_COUNT = 5
### Kubernetes-specific
- You must have a `celery beat` pod running. If you're using the chart included in the GitHub repository under [helm/superset](https://github.com/apache/superset/tree/master/helm/superset), you need to put `supersetCeleryBeat.enabled = true` in your values override.
-- You can see the dedicated docs about [Kubernetes installation](/docs/installation/kubernetes) for more details.
+- You can see the dedicated docs about [Kubernetes installation](/admin-docs/installation/kubernetes) for more details.
### Docker Compose specific
diff --git a/docs/docs/configuration/async-queries-celery.mdx b/docs/admin_docs/configuration/async-queries-celery.mdx
similarity index 100%
rename from docs/docs/configuration/async-queries-celery.mdx
rename to docs/admin_docs/configuration/async-queries-celery.mdx
diff --git a/docs/docs/configuration/cache.mdx b/docs/admin_docs/configuration/cache.mdx
similarity index 97%
rename from docs/docs/configuration/cache.mdx
rename to docs/admin_docs/configuration/cache.mdx
index 73a73332ba6..4bb37483181 100644
--- a/docs/docs/configuration/cache.mdx
+++ b/docs/admin_docs/configuration/cache.mdx
@@ -84,11 +84,11 @@ Caching for SQL Lab query results is used when async queries are enabled and is
Note that this configuration does not use a flask-caching dictionary for its configuration, but
instead requires a cachelib object.
-See [Async Queries via Celery](/docs/configuration/async-queries-celery) for details.
+See [Async Queries via Celery](/admin-docs/configuration/async-queries-celery) for details.
## Caching Thumbnails
-This is an optional feature that can be turned on by activating its [feature flag](/docs/configuration/configuring-superset#feature-flags) on config:
+This is an optional feature that can be turned on by activating its [feature flag](/admin-docs/configuration/configuring-superset#feature-flags) on config:
```
FEATURE_FLAGS = {
diff --git a/docs/docs/configuration/configuring-superset.mdx b/docs/admin_docs/configuration/configuring-superset.mdx
similarity index 98%
rename from docs/docs/configuration/configuring-superset.mdx
rename to docs/admin_docs/configuration/configuring-superset.mdx
index c0032f1727f..13b7edd5026 100644
--- a/docs/docs/configuration/configuring-superset.mdx
+++ b/docs/admin_docs/configuration/configuring-superset.mdx
@@ -37,7 +37,7 @@ ENV SUPERSET_CONFIG_PATH /app/superset_config.py
```
Docker compose deployments handle application configuration differently using specific conventions.
-Refer to the [docker compose tips & configuration](/docs/installation/docker-compose#docker-compose-tips--configuration)
+Refer to the [docker compose tips & configuration](/admin-docs/installation/docker-compose#docker-compose-tips--configuration)
for details.
The following is an example of just a few of the parameters you can set in your `superset_config.py` file:
@@ -141,10 +141,10 @@ database engine on a separate host or container.
Superset supports the following database engines/versions:
-| Database Engine | Supported Versions |
-| ----------------------------------------- | ---------------------------------------------- |
-| [PostgreSQL](https://www.postgresql.org/) | 10.X, 11.X, 12.X, 13.X, 14.X, 15.X, 16.X, 17.X |
-| [MySQL](https://www.mysql.com/) | 5.7, 8.X |
+| Database Engine | Supported Versions |
+| ----------------------------------------- | ---------------------------------------- |
+| [PostgreSQL](https://www.postgresql.org/) | 10.X, 11.X, 12.X, 13.X, 14.X, 15.X, 16.X |
+| [MySQL](https://www.mysql.com/) | 5.7, 8.X |
Use the following database drivers and connection strings:
@@ -246,7 +246,7 @@ flask --app "superset.app:create_app(superset_app_root='/analytics')"
### Docker builds
-The [docker compose](/docs/installation/docker-compose#configuring-further) developer
+The [docker compose](/admin-docs/installation/docker-compose#configuring-further) developer
configuration includes an additional environmental variable,
[`SUPERSET_APP_ROOT`](https://github.com/apache/superset/blob/master/docker/.env),
to simplify the process of setting up a non-default root path across the services.
@@ -441,7 +441,7 @@ FEATURE_FLAGS = {
}
```
-A current list of feature flags can be found in the [Feature Flags](/docs/configuration/feature-flags) documentation.
+A current list of feature flags can be found in the [Feature Flags](/admin-docs/configuration/feature-flags) documentation.
:::resources
- [Blog: Feature Flags in Apache Superset](https://preset.io/blog/feature-flags-in-apache-superset-and-preset/)
diff --git a/docs/docs/configuration/country-map-tools.mdx b/docs/admin_docs/configuration/country-map-tools.mdx
similarity index 100%
rename from docs/docs/configuration/country-map-tools.mdx
rename to docs/admin_docs/configuration/country-map-tools.mdx
diff --git a/docs/docs/configuration/event-logging.mdx b/docs/admin_docs/configuration/event-logging.mdx
similarity index 100%
rename from docs/docs/configuration/event-logging.mdx
rename to docs/admin_docs/configuration/event-logging.mdx
diff --git a/docs/docs/configuration/feature-flags.mdx b/docs/admin_docs/configuration/feature-flags.mdx
similarity index 100%
rename from docs/docs/configuration/feature-flags.mdx
rename to docs/admin_docs/configuration/feature-flags.mdx
diff --git a/docs/docs/configuration/importing-exporting-datasources.mdx b/docs/admin_docs/configuration/importing-exporting-datasources.mdx
similarity index 100%
rename from docs/docs/configuration/importing-exporting-datasources.mdx
rename to docs/admin_docs/configuration/importing-exporting-datasources.mdx
diff --git a/docs/docs/configuration/map-tiles.mdx b/docs/admin_docs/configuration/map-tiles.mdx
similarity index 100%
rename from docs/docs/configuration/map-tiles.mdx
rename to docs/admin_docs/configuration/map-tiles.mdx
diff --git a/docs/docs/configuration/networking-settings.mdx b/docs/admin_docs/configuration/networking-settings.mdx
similarity index 97%
rename from docs/docs/configuration/networking-settings.mdx
rename to docs/admin_docs/configuration/networking-settings.mdx
index 59017fa9612..f1af8a87ab6 100644
--- a/docs/docs/configuration/networking-settings.mdx
+++ b/docs/admin_docs/configuration/networking-settings.mdx
@@ -60,11 +60,11 @@ There are two approaches to making dashboards publicly accessible:
**Option 2: Dashboard-level access (selective control)**
1. Set `PUBLIC_ROLE_LIKE = "Public"` in `superset_config.py`
-2. Add the `'DASHBOARD_RBAC': True` [Feature Flag](/docs/configuration/feature-flags)
+2. Add the `'DASHBOARD_RBAC': True` [Feature Flag](/admin-docs/configuration/feature-flags)
3. Edit each dashboard's properties and add the "Public" role
4. Only dashboards with the Public role explicitly assigned are visible to anonymous users
-See the [Public role documentation](/docs/security/security#public) for more details.
+See the [Public role documentation](/admin-docs/security/security#public) for more details.
#### Embedding a Public Dashboard
diff --git a/docs/docs/configuration/sql-templating.mdx b/docs/admin_docs/configuration/sql-templating.mdx
similarity index 98%
rename from docs/docs/configuration/sql-templating.mdx
rename to docs/admin_docs/configuration/sql-templating.mdx
index b6337e06876..893c1886419 100644
--- a/docs/docs/configuration/sql-templating.mdx
+++ b/docs/admin_docs/configuration/sql-templating.mdx
@@ -7,10 +7,14 @@ version: 1
# SQL Templating
+:::tip Looking to use SQL templating?
+For a user-focused guide on writing Jinja templates in SQL Lab and virtual datasets, see the [SQL Templating User Guide](/user-docs/using-superset/sql-templating). This page covers administrator configuration options.
+:::
+
## Jinja Templates
SQL Lab and Explore supports [Jinja templating](https://jinja.palletsprojects.com/en/2.11.x/) in queries.
-To enable templating, the `ENABLE_TEMPLATE_PROCESSING` [feature flag](/docs/configuration/configuring-superset#feature-flags) needs to be enabled in `superset_config.py`.
+To enable templating, the `ENABLE_TEMPLATE_PROCESSING` [feature flag](/admin-docs/configuration/configuring-superset#feature-flags) needs to be enabled in `superset_config.py`.
:::warning[Security Warning]
diff --git a/docs/docs/configuration/theming.mdx b/docs/admin_docs/configuration/theming.mdx
similarity index 100%
rename from docs/docs/configuration/theming.mdx
rename to docs/admin_docs/configuration/theming.mdx
diff --git a/docs/docs/configuration/timezones.mdx b/docs/admin_docs/configuration/timezones.mdx
similarity index 74%
rename from docs/docs/configuration/timezones.mdx
rename to docs/admin_docs/configuration/timezones.mdx
index a1289d1cb9c..db53fcc6f46 100644
--- a/docs/docs/configuration/timezones.mdx
+++ b/docs/admin_docs/configuration/timezones.mdx
@@ -20,7 +20,7 @@ To help make the problem somewhat tractable—given that Apache Superset has no
To strive for data consistency (regardless of the timezone of the client) the Apache Superset backend tries to ensure that any timestamp sent to the client has an explicit (or semi-explicit as in the case with [Epoch time](https://en.wikipedia.org/wiki/Unix_time) which is always in reference to UTC) timezone encoded within.
-The challenge however lies with the slew of [database engines](/docs/databases#installing-drivers-in-docker) which Apache Superset supports and various inconsistencies between their [Python Database API (DB-API)](https://www.python.org/dev/peps/pep-0249/) implementations combined with the fact that we use [Pandas](https://pandas.pydata.org/) to read SQL into a DataFrame prior to serializing to JSON. Regrettably Pandas ignores the DB-API [type_code](https://www.python.org/dev/peps/pep-0249/#type-objects) relying by default on the underlying Python type returned by the DB-API. Currently only a subset of the supported database engines work correctly with Pandas, i.e., ensuring timestamps without an explicit timestamp are serializd to JSON with the server timezone, thus guaranteeing the client will display timestamps in a consistent manner irrespective of the client's timezone.
+The challenge however lies with the slew of [database engines](/admin-docs/databases#installing-drivers-in-docker) which Apache Superset supports and various inconsistencies between their [Python Database API (DB-API)](https://www.python.org/dev/peps/pep-0249/) implementations combined with the fact that we use [Pandas](https://pandas.pydata.org/) to read SQL into a DataFrame prior to serializing to JSON. Regrettably Pandas ignores the DB-API [type_code](https://www.python.org/dev/peps/pep-0249/#type-objects) relying by default on the underlying Python type returned by the DB-API. Currently only a subset of the supported database engines work correctly with Pandas, i.e., ensuring timestamps without an explicit timestamp are serializd to JSON with the server timezone, thus guaranteeing the client will display timestamps in a consistent manner irrespective of the client's timezone.
For example the following is a comparison of MySQL and Presto,
diff --git a/docs/admin_docs/index.md b/docs/admin_docs/index.md
new file mode 100644
index 00000000000..8b1c1de4b1a
--- /dev/null
+++ b/docs/admin_docs/index.md
@@ -0,0 +1,42 @@
+---
+title: Admin Documentation
+description: Administrator guides for installing, configuring, and managing Apache Superset
+---
+
+
+
+# Admin Documentation
+
+This section contains documentation for system administrators and operators who deploy and manage Apache Superset installations.
+
+## What's in this section
+
+- **[Installation](/admin-docs/installation/installation-methods)** - Deploy Superset using Docker, Kubernetes, or PyPI
+- **[Configuration](/admin-docs/configuration/configuring-superset)** - Configure authentication, caching, feature flags, and more
+- **[Security](/admin-docs/security/)** - Set up roles, permissions, and secure your deployment
+
+## Related
+
+- **[Database Drivers](/user-docs/databases/)** - See User Docs for database connection setup (admins may need to install drivers)
+
+## Looking for something else?
+
+- **[User Documentation](/user-docs/)** - Guides for analysts and business users
+- **[Developer Documentation](/developer-docs)** - Contributing, extensions, and development guides
diff --git a/docs/docs/installation/architecture.mdx b/docs/admin_docs/installation/architecture.mdx
similarity index 85%
rename from docs/docs/installation/architecture.mdx
rename to docs/admin_docs/installation/architecture.mdx
index 7830d5e078f..e531b30017e 100644
--- a/docs/docs/installation/architecture.mdx
+++ b/docs/admin_docs/installation/architecture.mdx
@@ -24,10 +24,10 @@ A Superset installation is made up of these components:
The optional components above are necessary to enable these features:
-- [Alerts and Reports](/docs/configuration/alerts-reports)
-- [Caching](/docs/configuration/cache)
-- [Async Queries](/docs/configuration/async-queries-celery/)
-- [Dashboard Thumbnails](/docs/configuration/cache/#caching-thumbnails)
+- [Alerts and Reports](/admin-docs/configuration/alerts-reports)
+- [Caching](/admin-docs/configuration/cache)
+- [Async Queries](/admin-docs/configuration/async-queries-celery/)
+- [Dashboard Thumbnails](/admin-docs/configuration/cache/#caching-thumbnails)
If you install with Kubernetes or Docker Compose, all of these components will be created.
@@ -59,7 +59,7 @@ The caching layer serves two main functions:
- Store the results of queries to your data warehouse so that when a chart is loaded twice, it pulls from the cache the second time, speeding up the application and reducing load on your data warehouse.
- Act as a message broker for the worker, enabling the Alerts & Reports, async queries, and thumbnail caching features.
-Most people use Redis for their cache, but Superset supports other options too. See the [cache docs](/docs/configuration/cache/) for more.
+Most people use Redis for their cache, but Superset supports other options too. See the [cache docs](/admin-docs/configuration/cache/) for more.
### Worker and Beat
@@ -67,6 +67,6 @@ This is one or more workers who execute tasks like run async queries or take sna
## Other components
-Other components can be incorporated into Superset. The best place to learn about additional configurations is the [Configuration page](/docs/configuration/configuring-superset). For instance, you could set up a load balancer or reverse proxy to implement HTTPS in front of your Superset application, or specify a Mapbox URL to enable geospatial charts, etc.
+Other components can be incorporated into Superset. The best place to learn about additional configurations is the [Configuration page](/admin-docs/configuration/configuring-superset). For instance, you could set up a load balancer or reverse proxy to implement HTTPS in front of your Superset application, or specify a Mapbox URL to enable geospatial charts, etc.
Superset won't even start without certain configuration settings established, so it's essential to review that page.
diff --git a/docs/docs/installation/docker-builds.mdx b/docs/admin_docs/installation/docker-builds.mdx
similarity index 100%
rename from docs/docs/installation/docker-builds.mdx
rename to docs/admin_docs/installation/docker-builds.mdx
diff --git a/docs/docs/installation/docker-compose.mdx b/docs/admin_docs/installation/docker-compose.mdx
similarity index 98%
rename from docs/docs/installation/docker-compose.mdx
rename to docs/admin_docs/installation/docker-compose.mdx
index 9727b97eaeb..04d14915860 100644
--- a/docs/docs/installation/docker-compose.mdx
+++ b/docs/admin_docs/installation/docker-compose.mdx
@@ -17,11 +17,11 @@ Since `docker compose` is primarily designed to run a set of containers on **a s
and can't support requirements for **high availability**, we do not support nor recommend
using our `docker compose` constructs to support production-type use-cases. For single host
environments, we recommend using [minikube](https://minikube.sigs.k8s.io/docs/start/) along
-with our [installing on k8s](https://superset.apache.org/docs/installation/running-on-kubernetes)
+with our [installing on k8s](https://superset.apache.org/admin-docs/installation/running-on-kubernetes)
documentation.
:::
-As mentioned in our [quickstart guide](/docs/quickstart), the fastest way to try
+As mentioned in our [quickstart guide](/user-docs/quickstart), the fastest way to try
Superset locally is using Docker Compose on a Linux or Mac OSX
computer. Superset does not have official support for Windows. It's also the easiest
way to launch a fully functioning **development environment** quickly.
diff --git a/docs/docs/installation/installation-methods.mdx b/docs/admin_docs/installation/installation-methods.mdx
similarity index 90%
rename from docs/docs/installation/installation-methods.mdx
rename to docs/admin_docs/installation/installation-methods.mdx
index 51f3708b3ef..0e8f11b7d57 100644
--- a/docs/docs/installation/installation-methods.mdx
+++ b/docs/admin_docs/installation/installation-methods.mdx
@@ -9,11 +9,11 @@ import useBaseUrl from "@docusaurus/useBaseUrl";
# Installation Methods
-How should you install Superset? Here's a comparison of the different options. It will help if you've first read the [Architecture](/docs/installation/architecture.mdx) page to understand Superset's different components.
+How should you install Superset? Here's a comparison of the different options. It will help if you've first read the [Architecture](/admin-docs/installation/architecture) page to understand Superset's different components.
The fundamental trade-off is between you needing to do more of the detail work yourself vs. using a more complex deployment route that handles those details.
-## [Docker Compose](/docs/installation/docker-compose.mdx)
+## [Docker Compose](/admin-docs/installation/docker-compose)
**Summary:** This takes advantage of containerization while remaining simpler than Kubernetes. This is the best way to try out Superset; it's also useful for developing & contributing back to Superset.
@@ -27,9 +27,9 @@ You will need to back up your metadata DB. That could mean backing up the servic
You will also need to extend the Superset docker image. The default `lean` images do not contain drivers needed to access your metadata database (Postgres or MySQL), nor to access your data warehouse, nor the headless browser needed for Alerts & Reports. You could run a `-dev` image while demoing Superset, which has some of this, but you'll still need to install the driver for your data warehouse. The `-dev` images run as root, which is not recommended for production.
-Ideally you will build your own image of Superset that extends `lean`, adding what your deployment needs. See [Building your own production Docker image](/docs/installation/docker-builds/#building-your-own-production-docker-image).
+Ideally you will build your own image of Superset that extends `lean`, adding what your deployment needs. See [Building your own production Docker image](/admin-docs/installation/docker-builds/#building-your-own-production-docker-image).
-## [Kubernetes (K8s)](/docs/installation/kubernetes.mdx)
+## [Kubernetes (K8s)](/admin-docs/installation/kubernetes)
**Summary:** This is the best-practice way to deploy a production instance of Superset, but has the steepest skill requirement - someone who knows Kubernetes.
@@ -41,7 +41,7 @@ A K8s deployment can scale up and down based on usage and deploy rolling updates
You will need to build your own Docker image, and back up your metadata DB, both as described in Docker Compose above. You'll also need to customize your Helm chart values and deploy and maintain your Kubernetes cluster.
-## [PyPI (Python)](/docs/installation/pypi.mdx)
+## [PyPI (Python)](/admin-docs/installation/pypi)
**Summary:** This is the only method that requires no knowledge of containers. It requires the most hands-on work to deploy, connect, and maintain each component.
diff --git a/docs/docs/installation/kubernetes.mdx b/docs/admin_docs/installation/kubernetes.mdx
similarity index 98%
rename from docs/docs/installation/kubernetes.mdx
rename to docs/admin_docs/installation/kubernetes.mdx
index cf8e0542a67..e54cf47cd2e 100644
--- a/docs/docs/installation/kubernetes.mdx
+++ b/docs/admin_docs/installation/kubernetes.mdx
@@ -149,7 +149,7 @@ For production clusters it's recommended to build own image with this step done
Superset requires a Python DB-API database driver and a SQLAlchemy
dialect to be installed for each datastore you want to connect to.
-See [Install Database Drivers](/docs/databases#installing-database-drivers) for more information.
+See [Install Database Drivers](/admin-docs/databases#installing-database-drivers) for more information.
It is recommended that you refer to versions listed in
[pyproject.toml](https://github.com/apache/superset/blob/master/pyproject.toml)
instead of hard-coding them in your bootstrap script, as seen below.
@@ -310,7 +310,7 @@ configOverrides:
### Enable Alerts and Reports
-For this, as per the [Alerts and Reports doc](/docs/configuration/alerts-reports), you will need to:
+For this, as per the [Alerts and Reports doc](/admin-docs/configuration/alerts-reports), you will need to:
#### Install a supported webdriver in the Celery worker
@@ -323,7 +323,7 @@ supersetWorker:
- -c
- |
# Install chrome webdriver
- # See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/docs/installation/email_reports.mdx
+ # See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/admin-docs/installation/email_reports.mdx
apt-get update
apt-get install -y wget
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
diff --git a/docs/docs/installation/pypi.mdx b/docs/admin_docs/installation/pypi.mdx
similarity index 97%
rename from docs/docs/installation/pypi.mdx
rename to docs/admin_docs/installation/pypi.mdx
index 14228c20812..820ac776b95 100644
--- a/docs/docs/installation/pypi.mdx
+++ b/docs/admin_docs/installation/pypi.mdx
@@ -134,7 +134,7 @@ pip install apache_superset
Then, define mandatory configurations, SECRET_KEY and FLASK_APP:
```bash
-export SUPERSET_SECRET_KEY=YOUR-SECRET-KEY # For production use, make sure this is a strong key, for example generated using `openssl rand -base64 42`. See https://superset.apache.org/docs/configuration/configuring-superset#specifying-a-secret_key
+export SUPERSET_SECRET_KEY=YOUR-SECRET-KEY # For production use, make sure this is a strong key, for example generated using `openssl rand -base64 42`. See https://superset.apache.org/admin-docs/configuration/configuring-superset#specifying-a-secret_key
export FLASK_APP=superset
```
diff --git a/docs/docs/installation/upgrading-superset.mdx b/docs/admin_docs/installation/upgrading-superset.mdx
similarity index 100%
rename from docs/docs/installation/upgrading-superset.mdx
rename to docs/admin_docs/installation/upgrading-superset.mdx
diff --git a/docs/docs/security/cves.mdx b/docs/admin_docs/security/cves.mdx
similarity index 100%
rename from docs/docs/security/cves.mdx
rename to docs/admin_docs/security/cves.mdx
diff --git a/docs/docs/security/securing_superset.mdx b/docs/admin_docs/security/securing_superset.mdx
similarity index 98%
rename from docs/docs/security/securing_superset.mdx
rename to docs/admin_docs/security/securing_superset.mdx
index a0d5f7b5914..92d42e385e0 100644
--- a/docs/docs/security/securing_superset.mdx
+++ b/docs/admin_docs/security/securing_superset.mdx
@@ -114,7 +114,7 @@ Superset can use Flask-Talisman to set security headers. However, it must be exp
>
> In Superset 4.0 and later, Talisman is disabled by default (`TALISMAN_ENABLED = False`). You **must** explicitly enable it in your `superset_config.py` for the security headers defined in `TALISMAN_CONFIG` to take effect.
-Here's the documentation section how how to set up Talisman: https://superset.apache.org/docs/security/#content-security-policy-csp
+Here's the documentation section how how to set up Talisman: https://superset.apache.org/admin-docs/security/#content-security-policy-csp
### **Database Security**
@@ -171,7 +171,7 @@ Rotating the `SUPERSET_SECRET_KEY` is a critical security procedure. It is manda
**Procedure for Rotating the Key**
The procedure for safely rotating the SECRET_KEY must be followed precisely to avoid locking yourself out of your instance. The official Apache Superset documentation maintains the correct, up-to-date procedure. Please follow the official guide here:
-https://superset.apache.org/docs/configuration/configuring-superset/#rotating-to-a-newer-secret_key
+https://superset.apache.org/admin-docs/configuration/configuring-superset/#rotating-to-a-newer-secret_key
:::resources
- [Blog: Running Apache Superset on the Open Internet](https://preset.io/blog/running-apache-superset-on-the-open-internet-a-report-from-the-fireline/)
diff --git a/docs/docs/security/security.mdx b/docs/admin_docs/security/security.mdx
similarity index 99%
rename from docs/docs/security/security.mdx
rename to docs/admin_docs/security/security.mdx
index 8983dd6d33a..cc68b1241b9 100644
--- a/docs/docs/security/security.mdx
+++ b/docs/admin_docs/security/security.mdx
@@ -431,7 +431,7 @@ TALISMAN_CONFIG = {
```
For more information on setting up Talisman, please refer to
-https://superset.apache.org/docs/configuration/networking-settings/#changing-flask-talisman-csp.
+https://superset.apache.org/admin-docs/configuration/networking-settings/#changing-flask-talisman-csp.
### Reporting Security Vulnerabilities
diff --git a/docs/docs/api.mdx b/docs/developer_docs/api.mdx
similarity index 100%
rename from docs/docs/api.mdx
rename to docs/developer_docs/api.mdx
diff --git a/docs/developer_docs/components/TODO.md b/docs/developer_docs/components/TODO.md
new file mode 100644
index 00000000000..c3564104795
--- /dev/null
+++ b/docs/developer_docs/components/TODO.md
@@ -0,0 +1,71 @@
+---
+title: Components TODO
+sidebar_class_name: hidden
+---
+
+# Components TODO
+
+These components were found but not yet supported for documentation generation.
+Future phases will add support for these sources.
+
+## Summary
+
+- **Total skipped:** 19 story files
+- **Reason:** Import path resolution not yet implemented
+
+## Skipped by Source
+
+### App Components
+
+9 components
+
+- [ ] `superset-frontend/src/components/AlteredSliceTag/AlteredSliceTag.stories.tsx`
+- [ ] `superset-frontend/src/components/Chart/DrillDetail/DrillDetailTableControls.stories.tsx`
+- [ ] `superset-frontend/src/components/CopyToClipboard/CopyToClipboard.stories.tsx`
+- [ ] `superset-frontend/src/components/ErrorMessage/ErrorAlert.stories.tsx`
+- [ ] `superset-frontend/src/components/FacePile/FacePile.stories.tsx`
+- [ ] `superset-frontend/src/components/FilterableTable/FilterableTable.stories.tsx`
+- [ ] `superset-frontend/src/components/RowCountLabel/RowCountLabel.stories.tsx`
+- [ ] `superset-frontend/src/components/Tag/Tag.stories.tsx`
+- [ ] `superset-frontend/src/components/TagsList/TagsList.stories.tsx`
+
+### Dashboard Components
+
+2 components
+
+- [ ] `superset-frontend/src/dashboard/components/AnchorLink/AnchorLink.stories.tsx`
+- [ ] `superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterControls/FilterDivider.stories.tsx`
+
+### Explore Components
+
+4 components
+
+- [ ] `superset-frontend/src/explore/components/ControlHeader.stories.tsx`
+- [ ] `superset-frontend/src/explore/components/RunQueryButton/RunQueryButton.stories.tsx`
+- [ ] `superset-frontend/src/explore/components/controls/BoundsControl.stories.tsx`
+- [ ] `superset-frontend/src/explore/components/controls/SliderControl.stories.tsx`
+
+### Feature Components
+
+2 components
+
+- [ ] `superset-frontend/src/features/datasets/AddDataset/DatasetPanel/DatasetPanel.stories.tsx`
+- [ ] `superset-frontend/src/features/home/LanguagePicker.stories.tsx`
+
+### Filter Components
+
+2 components
+
+- [ ] `superset-frontend/src/filters/components/Range/RangeFilterPlugin.stories.tsx`
+- [ ] `superset-frontend/src/filters/components/Select/SelectFilterPlugin.stories.tsx`
+
+## How to Add Support
+
+1. Determine the correct import path for the source
+2. Update `generate-superset-components.mjs` to handle the source
+3. Add source to `SUPPORTED_SOURCES` array
+4. Re-run the generator
+
+---
+
+*Auto-generated by generate-superset-components.mjs*
diff --git a/docs/developer_docs/components/design-system/dropdowncontainer.mdx b/docs/developer_docs/components/design-system/dropdowncontainer.mdx
new file mode 100644
index 00000000000..205a209a5fd
--- /dev/null
+++ b/docs/developer_docs/components/design-system/dropdowncontainer.mdx
@@ -0,0 +1,167 @@
+---
+title: DropdownContainer
+sidebar_label: DropdownContainer
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# DropdownContainer
+
+DropdownContainer arranges items horizontally and moves overflowing items into a dropdown popover. Resize the container to see the overflow behavior.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ const items = Array.from({ length: 6 }, (_, i) => ({
+ id: 'item-' + i,
+ element: React.createElement('div', {
+ style: {
+ minWidth: 120,
+ padding: '4px 12px',
+ background: '#e6f4ff',
+ border: '1px solid #91caff',
+ borderRadius: 4,
+ },
+ }, 'Filter ' + (i + 1)),
+ }));
+ return (
+
+
+
+ Drag the right edge to resize and see items overflow into a dropdown
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `count` | `number` | `5` | Number to show in the badge. |
+| `size` | `string` | `"default"` | Size of the badge. |
+| `showZero` | `boolean` | `false` | Whether to show badge when count is zero. |
+| `overflowCount` | `number` | `99` | Max count to show. Shows count+ when exceeded (e.g., 99+). |
+
+## Import
+
+```tsx
+import { Badge } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Badge/Badge.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/breadcrumb.mdx b/docs/developer_docs/components/ui/breadcrumb.mdx
new file mode 100644
index 00000000000..60081b937cf
--- /dev/null
+++ b/docs/developer_docs/components/ui/breadcrumb.mdx
@@ -0,0 +1,93 @@
+---
+title: Breadcrumb
+sidebar_label: Breadcrumb
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# Breadcrumb
+
+Breadcrumb component for displaying navigation paths.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+
+
+## Import
+
+```tsx
+import { Breadcrumb } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Breadcrumb/Breadcrumb.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/button.mdx b/docs/developer_docs/components/ui/button.mdx
new file mode 100644
index 00000000000..d36acbbf680
--- /dev/null
+++ b/docs/developer_docs/components/ui/button.mdx
@@ -0,0 +1,142 @@
+---
+title: Button
+sidebar_label: Button
+---
+
+
+
+import { StoryWithControls, ComponentGallery } from '../../../src/components/StorybookWrapper';
+
+# Button
+
+The Button component from Superset's UI library.
+
+## All Variants
+
+
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `buttonStyle` | `string` | `"default"` | The style variant of the button. |
+| `buttonSize` | `string` | `"default"` | The size of the button. |
+| `children` | `string` | `"Button!"` | The button text or content. |
+
+## Import
+
+```tsx
+import { Button } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Button/Button.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/buttongroup.mdx b/docs/developer_docs/components/ui/buttongroup.mdx
new file mode 100644
index 00000000000..6f35bea6159
--- /dev/null
+++ b/docs/developer_docs/components/ui/buttongroup.mdx
@@ -0,0 +1,88 @@
+---
+title: ButtonGroup
+sidebar_label: ButtonGroup
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# ButtonGroup
+
+ButtonGroup is a container that groups multiple Button components together with consistent spacing and styling.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+
+
+
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `expand` | `boolean` | `false` | When true, buttons expand to fill available width. |
+
+## Import
+
+```tsx
+import { ButtonGroup } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/ButtonGroup/ButtonGroup.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/cachedlabel.mdx b/docs/developer_docs/components/ui/cachedlabel.mdx
new file mode 100644
index 00000000000..65a83d5a7c7
--- /dev/null
+++ b/docs/developer_docs/components/ui/cachedlabel.mdx
@@ -0,0 +1,79 @@
+---
+title: CachedLabel
+sidebar_label: CachedLabel
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# CachedLabel
+
+The CachedLabel component from Superset's UI library.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+
+
+## Import
+
+```tsx
+import { CachedLabel } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/CachedLabel/CachedLabel.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/card.mdx b/docs/developer_docs/components/ui/card.mdx
new file mode 100644
index 00000000000..989706ed940
--- /dev/null
+++ b/docs/developer_docs/components/ui/card.mdx
@@ -0,0 +1,142 @@
+---
+title: Card
+sidebar_label: Card
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# Card
+
+A container component for grouping related content. Supports titles, borders, loading states, and hover effects.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ This card displays a summary of your dashboard metrics and recent activity.
+
+ );
+}
+```
+
+## Card States
+
+```tsx live
+function CardStates() {
+ return (
+
+
+ Default card content.
+
+
+ Hover over this card.
+
+
+ This content is hidden while loading.
+
+
+ Borderless card.
+
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `padded` | `boolean` | `true` | Whether the card content has padding. |
+| `title` | `string` | `"Dashboard Overview"` | Title text displayed at the top of the card. |
+| `children` | `string` | `"This card displays a summary of your dashboard metrics and recent activity."` | The content inside the card. |
+| `bordered` | `boolean` | `true` | Whether to show a border around the card. |
+| `loading` | `boolean` | `false` | Whether to show a loading skeleton. |
+| `hoverable` | `boolean` | `false` | Whether the card lifts on hover. |
+
+## Import
+
+```tsx
+import { Card } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Card/Card.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/checkbox.mdx b/docs/developer_docs/components/ui/checkbox.mdx
new file mode 100644
index 00000000000..a7b76e5b5ca
--- /dev/null
+++ b/docs/developer_docs/components/ui/checkbox.mdx
@@ -0,0 +1,141 @@
+---
+title: Checkbox
+sidebar_label: Checkbox
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# Checkbox
+
+Checkbox component that supports both regular and indeterminate states, built on top of Ant Design v5 Checkbox.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## All Checkbox States
+
+```tsx live
+function AllStates() {
+ return (
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `checked` | `boolean` | `false` | Whether the checkbox is checked. |
+| `indeterminate` | `boolean` | `false` | Whether the checkbox is in indeterminate state (partially selected). |
+
+## Import
+
+```tsx
+import { Checkbox } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Checkbox/Checkbox.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/collapse.mdx b/docs/developer_docs/components/ui/collapse.mdx
new file mode 100644
index 00000000000..1bfef9f2868
--- /dev/null
+++ b/docs/developer_docs/components/ui/collapse.mdx
@@ -0,0 +1,106 @@
+---
+title: Collapse
+sidebar_label: Collapse
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# Collapse
+
+The Collapse component from Superset's UI library.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `ghost` | `boolean` | `false` | - |
+| `bordered` | `boolean` | `true` | - |
+| `accordion` | `boolean` | `false` | - |
+| `animateArrows` | `boolean` | `false` | - |
+| `modalMode` | `boolean` | `false` | - |
+
+## Import
+
+```tsx
+import { Collapse } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Collapse/Collapse.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/datepicker.mdx b/docs/developer_docs/components/ui/datepicker.mdx
new file mode 100644
index 00000000000..0daebc8058a
--- /dev/null
+++ b/docs/developer_docs/components/ui/datepicker.mdx
@@ -0,0 +1,110 @@
+---
+title: DatePicker
+sidebar_label: DatePicker
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# DatePicker
+
+The DatePicker component from Superset's UI library.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `placeholder` | `string` | `"Select date"` | - |
+| `showNow` | `boolean` | `true` | Show "Now" button to select current date and time. |
+| `allowClear` | `boolean` | `false` | - |
+| `autoFocus` | `boolean` | `true` | - |
+| `disabled` | `boolean` | `false` | - |
+| `format` | `string` | `"YYYY-MM-DD hh:mm a"` | - |
+| `inputReadOnly` | `boolean` | `false` | - |
+| `picker` | `string` | `"date"` | - |
+| `placement` | `string` | `"bottomLeft"` | - |
+| `size` | `string` | `"middle"` | - |
+| `showTime` | `any` | `{"format":"hh:mm a","needConfirm":false}` | - |
+
+## Import
+
+```tsx
+import { DatePicker } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/DatePicker/DatePicker.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/divider.mdx b/docs/developer_docs/components/ui/divider.mdx
new file mode 100644
index 00000000000..73bf9aa5b3f
--- /dev/null
+++ b/docs/developer_docs/components/ui/divider.mdx
@@ -0,0 +1,144 @@
+---
+title: Divider
+sidebar_label: Divider
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# Divider
+
+The Divider component from Superset's UI library.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+ <>
+
Horizontal divider with title (orientationMargin applies here):
+ Left Title
+ Right Title
+ Center Title
+
Vertical divider (use container gap for spacing):
+
+ Link
+
+ Link
+
+ Link
+
+ >
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `dashed` | `boolean` | `false` | Whether line is dashed (deprecated, use variant). |
+| `variant` | `string` | `"solid"` | Line style of the divider. |
+| `orientation` | `string` | `"center"` | Position of title inside divider. |
+| `orientationMargin` | `string` | `""` | Margin from divider edge to title. |
+| `plain` | `boolean` | `true` | Use plain style without bold title. |
+| `type` | `string` | `"horizontal"` | Direction of the divider. |
+
+## Import
+
+```tsx
+import { Divider } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Divider/Divider.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/editabletitle.mdx b/docs/developer_docs/components/ui/editabletitle.mdx
new file mode 100644
index 00000000000..d5e3e2a20c5
--- /dev/null
+++ b/docs/developer_docs/components/ui/editabletitle.mdx
@@ -0,0 +1,172 @@
+---
+title: EditableTitle
+sidebar_label: EditableTitle
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# EditableTitle
+
+The EditableTitle component from Superset's UI library.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+ console.log('Saved:', newTitle)}
+ />
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `canEdit` | `boolean` | `true` | Whether the title can be edited. |
+| `editing` | `boolean` | `false` | Whether the title is currently in edit mode. |
+| `emptyText` | `string` | `"Empty text"` | Text to display when title is empty. |
+| `noPermitTooltip` | `string` | `"Not permitted"` | Tooltip shown when user lacks edit permission. |
+| `showTooltip` | `boolean` | `true` | Whether to show tooltip on hover. |
+| `title` | `string` | `"Title"` | The title text to display. |
+| `defaultTitle` | `string` | `"Default title"` | Default title when none is provided. |
+| `placeholder` | `string` | `"Placeholder"` | Placeholder text when editing. |
+| `certifiedBy` | `string` | `""` | Name of person/team who certified this item. |
+| `certificationDetails` | `string` | `""` | Additional certification details or description. |
+| `maxWidth` | `number` | `100` | Maximum width of the title in pixels. |
+| `autoSize` | `boolean` | `true` | Whether to auto-size based on content. |
+
+## Import
+
+```tsx
+import { EditableTitle } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/EditableTitle/EditableTitle.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/emptystate.mdx b/docs/developer_docs/components/ui/emptystate.mdx
new file mode 100644
index 00000000000..aeb7938f311
--- /dev/null
+++ b/docs/developer_docs/components/ui/emptystate.mdx
@@ -0,0 +1,147 @@
+---
+title: EmptyState
+sidebar_label: EmptyState
+---
+
+
+
+import { StoryWithControls, ComponentGallery } from '../../../src/components/StorybookWrapper';
+
+# EmptyState
+
+The EmptyState component from Superset's UI library.
+
+## All Variants
+
+
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+ alert('Filters cleared!')}
+ />
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `size` | `string` | `"medium"` | Size of the empty state component. |
+| `title` | `string` | `"No Data Available"` | Main title text. |
+| `description` | `string` | `"There is no data to display at this time."` | Description text below the title. |
+| `image` | `string` | `"empty.svg"` | Predefined image to display. |
+| `buttonText` | `string` | `""` | Text for optional action button. |
+
+## Import
+
+```tsx
+import { EmptyState } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/EmptyState/EmptyState.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/favestar.mdx b/docs/developer_docs/components/ui/favestar.mdx
new file mode 100644
index 00000000000..263659ac4a6
--- /dev/null
+++ b/docs/developer_docs/components/ui/favestar.mdx
@@ -0,0 +1,96 @@
+---
+title: FaveStar
+sidebar_label: FaveStar
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# FaveStar
+
+FaveStar component for marking items as favorites
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `itemId` | `number` | `1` | Unique identifier for the item |
+| `isStarred` | `boolean` | `false` | Whether the item is currently starred. |
+| `showTooltip` | `boolean` | `true` | Show tooltip on hover. |
+
+## Import
+
+```tsx
+import { FaveStar } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/FaveStar/FaveStar.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/iconbutton.mdx b/docs/developer_docs/components/ui/iconbutton.mdx
new file mode 100644
index 00000000000..387b937e2e7
--- /dev/null
+++ b/docs/developer_docs/components/ui/iconbutton.mdx
@@ -0,0 +1,106 @@
+---
+title: IconButton
+sidebar_label: IconButton
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# IconButton
+
+The IconButton component is a versatile button that allows you to combine an icon with a text label. It is designed for use in situations where you want to display an icon along with some text in a single clickable element.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `buttonText` | `string` | `"IconButton"` | The text inside the button. |
+| `altText` | `string` | `"Icon button alt text"` | The alt text for the button. If not provided, the button text is used as the alt text by default. |
+| `padded` | `boolean` | `true` | Add padding between icon and button text. |
+| `icon` | `string` | `"https://superset.apache.org/img/superset-logo-horiz.svg"` | Icon inside the button (URL or path). |
+
+## Import
+
+```tsx
+import { IconButton } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/IconButton/IconButton.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/icons.mdx b/docs/developer_docs/components/ui/icons.mdx
new file mode 100644
index 00000000000..97b0b023862
--- /dev/null
+++ b/docs/developer_docs/components/ui/icons.mdx
@@ -0,0 +1,252 @@
+---
+title: Icons
+sidebar_label: Icons
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# Icons
+
+Icon library for Apache Superset. Contains over 200 icons based on Ant Design icons with consistent sizing and theming support.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## Props
+
+| Prop | Type | Default | Description |
+|------|------|---------|-------------|
+| `size` | `string` | `"m"` | Size of the spinner: s (40px), m (70px), or l (100px). |
+| `position` | `string` | `"normal"` | Position style: normal (inline flow), floating (overlay), or inline. |
+| `muted` | `boolean` | `false` | Whether to show a muted/subtle version of the spinner. |
+
+## Import
+
+```tsx
+import { Loading } from '@superset/components';
+```
+
+---
+
+:::tip[Improve this page]
+This documentation is auto-generated from the component's Storybook story.
+Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Loading/Loading.stories.tsx).
+:::
diff --git a/docs/developer_docs/components/ui/menu.mdx b/docs/developer_docs/components/ui/menu.mdx
new file mode 100644
index 00000000000..7dd4baac68d
--- /dev/null
+++ b/docs/developer_docs/components/ui/menu.mdx
@@ -0,0 +1,174 @@
+---
+title: Menu
+sidebar_label: Menu
+---
+
+
+
+import { StoryWithControls } from '../../../src/components/StorybookWrapper';
+
+# Menu
+
+Navigation menu component supporting horizontal, vertical, and inline modes. Based on Ant Design Menu with Superset styling.
+
+## Live Example
+
+
+
+## Try It
+
+Edit the code below to experiment with the component:
+
+```tsx live
+function Demo() {
+ return (
+
+ );
+}
+```
+
+## Vertical Menu
+
+```tsx live
+function VerticalMenu() {
+ return (
+
+ );
+}
+```
+
+## Menu with Icons
+
+```tsx live
+function MenuWithIcons() {
+ return (
+