Repository: kubernetes-sigs/kro

Issue:
Conflict when 2 RGDs define the same Schema Kind
### Description

<!-- Please craft a detailed description of the documentation issue or suggestion -->
<!-- Below are some suggestions but feel free to modify or remove them -->

**Observed Behavior**:
Create 2 RGDs with same `.spec.schema.Kind` and `.spec.schema.apiVersion` and different `.spec.schema.spec`

The KRO controller would overwrite the CRD created by one RGD with values from the other RGD. Sometimes in a conflicting fight. 

**Expected Behavior**:
KRO Should pick one of the RGD and throw an error in the other RGD.

**Versions**:
- kro version: 0.2.4


* Please vote on this issue by adding a 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to the original issue to help the community and maintainers prioritize this request
* Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
* If you are interested in working on this issue or have submitted a pull request, please leave a comment


### Which option describes the most your issue?

_No response_

Discussion:
@github-actions: This issue has been marked **stale** due to 30 days of inactivity. Maintainers use this label for hygiene.  Comment or add a relevant label (keepalive) to keep it from becoming stale.@k8s-triage-robot: The Kubernetes project currently lacks enough active contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:
- After 90d of inactivity, `lifecycle/stale` is applied
- After 30d of inactivity since `lifecycle/stale` was applied, `lifecycle/rotten` is applied
- After 30d of inactivity since `lifecycle/rotten` was applied, the issue is closed

You can:
- Mark this issue as fresh with `/remove-lifecycle rotten`
- Close this issue with `/close`
- Offer to help out with [Issue Triage][1]

Please send feedback to sig-contributor-experience at [kubernetes/community](https://github.com/kubernetes/community).

/lifecycle rotten

[1]: https://www.kubernetes.dev/docs/guide/issue-triage/

Solution patch:
diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml
index 15c7f05..1b85e76 100644
--- a/.github/workflows/deploy-docs.yaml
+++ b/.github/workflows/deploy-docs.yaml
@@ -21,7 +21,7 @@ jobs:
           fetch-depth: 0
       - uses: actions/setup-node@v4
         with:
-          node-version: 18
+          node-version: 20
 
       - name: Install dependencies
         run: npm install --frozen-lockfile
diff --git a/.github/workflows/test-docs.yaml b/.github/workflows/test-docs.yaml
index c7aaf7e..7acd976 100644
--- a/.github/workflows/test-docs.yaml
+++ b/.github/workflows/test-docs.yaml
@@ -15,12 +15,12 @@ jobs:
       run:
         working-directory: ./website
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v5
         with:
           fetch-depth: 0
-      - uses: actions/setup-node@v4
+      - uses: actions/setup-node@v5
         with:
-          node-version: 18
+          node-version: 20
   
       - name: Install dependencies
         run: npm install --frozen-lockfile
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
deleted file mode 100644
index d46f291..0000000
--- a/GOVERNANCE.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# Kube Resource Orchestrator Project Governance
-
-[Instructions](https://contribute.cncf.io/maintainers/github/templates/required/governance-maintainer/)
-
-<!-- template begins here-->
-
-This governance document explains how the Kube Resource Orchestrator project is run.
-
-- [Kube Resource Orchestrator Project Governance](#kube-resource-orchestrator-project-governance)
-  - [Values](#values)
-  - [Maintainers](#maintainers)
-    - [Becoming a Maintainer](#becoming-a-maintainer)
-    - [Removing a Maintainer](#removing-a-maintainer)
-  - [Meetings](#meetings)
-  - [Code of Conduct](#code-of-conduct)
-  - [Security Response Team](#security-response-team)
-  - [Voting](#voting)
-  - [Modifying this Charter](#modifying-this-charter)
-
-## Values
-
-The Kube Resource Orchestrator project and its leadership embrace the following values:
-
-* Openness: Communication and decision-making happens in the open and is discoverable for future
-  reference. As much as possible, all discussions and work take place in public
-  forums and open repositories.
-
-* Fairness: All stakeholders have the opportunity to provide feedback and submit
-  contributions, which will be considered on their merits.
-
-* Community over Product or Company: Sustaining and growing our community takes
-  priority over shipping code or sponsors' organizational goals.  Each
-  contributor participates in the project as an individual.
-
-* Inclusivity: We innovate through different perspectives and skill sets, which
-  can only be accomplished in a welcoming and respectful environment.
-
-* Participation: Responsibilities within the project are earned through
-  participation, and there is a clear path up the contributor ladder into leadership
-  positions.
-
-## Maintainers
-
-Kube Resource Orchestrator Maintainers have write access to the project GitHub repository.
-They can merge their own patches or patches from others. The current maintainers
-can be found in [MAINTAINERS.md](./MAINTAINERS.md).  Maintainers collectively manage the project's
-resources and contributors.
-
-This privilege is granted with some expectation of responsibility: maintainers
-are people who care about the Kube Resource Orchestrator project and want to help it grow and
-improve. A maintainer is not just someone who can make changes, but someone who
-has demonstrated their ability to collaborate with the team, get the most
-knowledgeable people to review code and docs, contribute high-quality code, and
-follow through to fix issues (in code or tests).
-
-A maintainer is a contributor to the project's success and a citizen helping
-the project succeed.
-
-The collective team of all Maintainers is known as the Maintainer Council, which
-is the governing body for the project.
-
-### Becoming a Maintainer
-
-To become a Maintainer you need to demonstrate the following:
-
-  * commitment to the project:
-    * participate in discussions, contributions, code and documentation reviews
-      for [TODO: Time Period] or more,
-    * perform reviews for [TODO:Number] non-trivial pull requests,
-    * contribute [TODO:Number] non-trivial pull requests and have them merged,
-  * ability to write quality code and/or documentation,
-  * ability to collaborate with the team,
-  * understanding of how the team works (policies, processes for testing and code review, etc),
-  * understanding of the project's code base and coding and documentation style.
-  <!-- add any additional Maintainer requirements here -->
-
-A new Maintainer must be proposed by an existing maintainer by sending a message to the
-[developer mailing list](TODO: List Link). A simple majority vote of existing Maintainers
-approves the application.  Maintainers nominations will be evaluated without prejudice
-to employer or demographics.
-
-Maintainers who are selected will be granted the necessary GitHub rights,
-and invited to the [private maintainer mailing list](TODO).
-
-### Removing a Maintainer
-
-Maintainers may resign at any time if they feel that they will not be able to
-continue fulfilling their project duties.
-
-Maintainers may also be removed after being inactive, failure to fulfill their 
-Maintainer responsibilities, violating the Code of Conduct, or other reasons.
-Inactivity is defined as a period of very low or no activity in the project 
-for a year or more, with no definite schedule to return to full Maintainer 
-activity.
-
-A Maintainer may be removed at any time by a 2/3 vote of the remaining maintainers.
-
-Depending on the reason for removal, a Maintainer may be converted to Emeritus
-status.  Emeritus Maintainers will still be consulted on some project matters,
-and can be rapidly returned to Maintainer status if their availability changes.
-
-## Meetings
-
-Time zones permitting, Maintainers are expected to participate in the public
-developer meeting, which occurs
-[TODO: Details of regular developer or maintainer meeting here].  
-
-Maintainers will also have closed meetings in order to discuss security reports
-or Code of Conduct violations.  Such meetings should be scheduled by any
-Maintainer on receipt of a security issue or CoC report.  All current Maintainers
-must be invited to such closed meetings, except for any Maintainer who is
-accused of a CoC violation.
-
-## Code of Conduct
-
-[Code of Conduct](./CODE_OF_CONDUCT.md)
-violations by community members will be discussed and resolved
-on the [private Maintainer mailing list](TODO). 
-
-## Security Response Team
-
-The Maintainers will appoint a Security Response Team to handle security reports.
-This committee may simply consist of the Maintainer Council themselves.  If this
-responsibility is delegated, the Maintainers will appoint a team of at least two 
-contributors to handle it.  The Maintainers will review who is assigned to this
-at least once a year.
-
-The Security Response Team is responsible for handling all reports of security
-holes and breaches according to the [security policy](TODO:Link to security.md).
-
-## Voting
-
-While most business in Kube Resource Orchestrator is conducted by "[lazy consensus](https://community.apache.org/committers/lazyConsensus.html)", 
-periodically the Maintainers may need to vote on specific actions or changes.
-A vote can be taken on [the developer mailing list](TODO) or
-[the private Maintainer mailing list](TODO) for security or conduct matters.  
-Votes may also be taken at [the developer meeting](TODO).  Any Maintainer may
-demand a vote be taken.
-
-Most votes require a simple majority of all Maintainers to succeed, except where
-otherwise noted.  Two-thirds majority votes mean at least two-thirds of all 
-existing maintainers.
-
-## Modifying this Charter
-
-Changes to this Governance and its supporting documents may be approved by 
-a 2/3 vote of the Maintainers.
diff --git a/examples/aws/webstack/Readme.md b/examples/aws/webstack/Readme.md
index 3773c21..e534586 100644
--- a/examples/aws/webstack/Readme.md
+++ b/examples/aws/webstack/Readme.md
@@ -3,7 +3,7 @@
 This example creates a ResourceGraphDefinition called `WebStack` comprised of
 three other RGs: `WebApp`, `S3Bucket`, and `PodIdentity`
 
-![Nested RGD Instance](../../../images/architecture-diagrams/kro-WebStack.png)
+![Nested RGD Instance](../../../website/static/img/architecture/kro-WebStack.png)
 _Figure 1: Nested RGD Example_
 
 ### Create ResourceGraphDefinitions
diff --git a/go.mod b/go.mod
index 162ffd9..f378c77 100644
--- a/go.mod
+++ b/go.mod
@@ -8,6 +8,7 @@ require (
 	github.com/gobuffalo/flect v1.0.2
 	github.com/google/cel-go v0.24.1
 	github.com/google/go-cmp v0.6.0
+	github.com/hashicorp/golang-lru/v2 v2.0.7
 	github.com/onsi/ginkgo/v2 v2.20.0
 	github.com/onsi/gomega v1.34.1
 	github.com/prometheus/client_golang v1.19.1
@@ -18,6 +19,7 @@ require (
 	golang.org/x/sync v0.12.0
 	golang.org/x/time v0.3.0
 	google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7
+	gopkg.in/yaml.v2 v2.4.0
 	k8s.io/api v0.31.0
 	k8s.io/apiextensions-apiserver v0.31.0
 	k8s.io/apimachinery v0.31.0
@@ -54,7 +56,6 @@ require (
 	github.com/golang/protobuf v1.5.4 // indirect
 	github.com/google/gnostic-models v0.6.8 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
-	github.com/google/licenseclassifier/v2 v2.0.0 // indirect
 	github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
 	github.com/google/uuid v1.6.0 // indirect
 	github.com/hashicorp/hcl v1.0.0 // indirect
@@ -74,8 +75,6 @@ require (
 	github.com/prometheus/client_model v0.6.1 // indirect
 	github.com/prometheus/common v0.55.0 // indirect
 	github.com/prometheus/procfs v0.15.1 // indirect
-	github.com/sergi/go-diff v1.3.1 // indirect
-	github.com/sirupsen/logrus v1.9.3 // indirect
 	github.com/spf13/afero v1.9.5 // indirect
 	github.com/spf13/cast v1.5.1 // indirect
 	github.com/spf13/jwalterweatherman v1.1.0 // indirect
@@ -84,10 +83,8 @@ require (
 	github.com/stoewer/go-strcase v1.2.0 // indirect
 	github.com/subosito/gotenv v1.4.2 // indirect
 	github.com/x448/float16 v0.8.4 // indirect
-	github.com/xlab/treeprint v1.2.0 // indirect
 	go.uber.org/multierr v1.11.0 // indirect
 	go.yaml.in/yaml/v2 v2.4.2 // indirect
-	golang.org/x/mod v0.22.0 // indirect
 	golang.org/x/net v0.38.0 // indirect
 	golang.org/x/oauth2 v0.28.0 // indirect
 	golang.org/x/sys v0.31.0 // indirect
@@ -100,13 +97,10 @@ require (
 	gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
 	gopkg.in/ini.v1 v1.67.0 // indirect
-	gopkg.in/yaml.v2 v2.4.0 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 	k8s.io/klog/v2 v2.130.1 // indirect
 	sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
 	sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
 )
 
-tool (
-	github.com/B1NARY-GR0UP/nwa
-)
+tool github.com/B1NARY-GR0UP/nwa
diff --git a/go.sum b/go.sum
index f7a3b0c..5e06850 100644
--- a/go.sum
+++ b/go.sum
@@ -44,8 +44,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
 github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
 github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
-github.com/awslabs/attribution-gen v0.0.4 h1:sG1PKMEn+XB/8e9Y38wox3+ucdioAI+mn5BkXz6faBI=
-github.com/awslabs/attribution-gen v0.0.4/go.mod h1:RFlz2/p2wAbXEFWe20sF4DufDfTZ133nX9x7ECuhZS4=
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 github.com/bmatcuk/doublestar/v4 v4.6.0 h1:HTuxyug8GyFbRkrffIpzNCSK4luc0TY3wzXvzIZhEXc=
@@ -156,8 +154,6 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
 github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/licenseclassifier/v2 v2.0.0 h1:1Y57HHILNf4m0ABuMVb6xk4vAJYEUO0gDxNpog0pyeA=
-github.com/google/licenseclassifier/v2 v2.0.0/go.mod h1:cOjbdH0kyC9R22sdQbYsFkto4NGCAc+ZSwbeThazEtM=
 github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
 github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
 github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
@@ -182,6 +178,8 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m
 github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
 github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
+github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
 github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
 github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
@@ -244,11 +242,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
 github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
 github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
-github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
-github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
-github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
-github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM=
 github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ=
 github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA=
@@ -281,8 +274,6 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8
 github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
-github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
-github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -345,8 +336,6 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
-golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -439,7 +428,6 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
 golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -613,7 +601,6 @@ google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6h
 google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
@@ -624,7 +611,6 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
 gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
 gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
diff --git a/pkg/applyset/applyset.go b/pkg/applyset/applyset.go
index 16bb5b3..602bdd9 100644
--- a/pkg/applyset/applyset.go
+++ b/pkg/applyset/applyset.go
@@ -29,8 +29,10 @@ import (
 	"reflect"
 	"sort"
 	"strings"
+	"sync"
 
 	"github.com/go-logr/logr"
+	"golang.org/x/sync/errgroup"
 	apierrors "k8s.io/apimachinery/pkg/api/errors"
 	"k8s.io/apimachinery/pkg/api/meta"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -116,6 +118,10 @@ type Config struct {
 
 	// Log is used to inject the calling reconciler's logger
 	Log logr.Logger
+
+	// Concurrency is the maximum number of concurrent apply and prune operations in a single applyset.
+	// If not provided, the default value is the number of objects in the applyset.
+	Concurrency int
 }
 
 /*
@@ -186,9 +192,10 @@ func New(
 				FieldManager: config.FieldManager,
 				Force:        true,
 			},
-			//deleteOptions: metav1.DeleteOptions{},
+			// deleteOptions: metav1.DeleteOptions{},
 		},
-		log: config.Log,
+		log:         config.Log,
+		concurrency: config.Concurrency,
 	}
 
 	gvk := parent.GroupVersionKind()
@@ -259,6 +266,10 @@ type applySet struct {
 	serverOptions
 
 	log logr.Logger
+
+	// concurrency is the maximum number of concurrent apply and prune operations in a single applyset.
+	// If not provided, the default value is the number of objects in the applyset.
+	concurrency int
 }
 
 func (a *applySet) getAndRecordNamespace(obj ApplyableObject, restMapping *meta.RESTMapping) error {
@@ -544,19 +555,35 @@ func (a *applySet) apply(ctx context.Context, dryRun bool) (*ApplyResult, error)
 	if dryRun {
 		options.DryRun = []string{"All"}
 	}
-	for _, obj := range a.desired.objects {
 
+	concurrency := a.concurrency
+	if concurrency <= 0 {
+		concurrency = len(a.desired.objects)
+	}
+
+	eg, egctx := errgroup.WithContext(ctx)
+	eg.SetLimit(concurrency)
+
+	// protect concurrent access to write the apply results
+	var mu sync.Mutex
+
+	for _, obj := range a.desired.objects {
 		dynResource, err := a.resourceClient(obj)
 		if err != nil {
 			return results, err
 		}
-		lastApplied, err := dynResource.Apply(ctx, obj.GetName(), obj.Unstructured, options)
-		results.recordApplied(obj, lastApplied, err)
-		a.log.V(2).Info("applied object", "object", obj.String(), "applied-revision", lastApplied.GetResourceVersion(),
-			"error", err)
-	}
-
-	return results, nil
+		eg.Go(func() error {
+			lastApplied, err := dynResource.Apply(egctx, obj.GetName(), obj.Unstructured, options)
+			mu.Lock()
+			defer mu.Unlock()
+			results.recordApplied(obj, lastApplied, err)
+			a.log.V(2).Info("applied object", "object", obj.String(), "applied-revision", lastApplied.GetResourceVersion(),
+				"error", err)
+			return nil
+		})
+	}
+
+	return results, eg.Wait()
 }
 
 func (a *applySet) prune(ctx context.Context, results *ApplyResult, dryRun bool) (*ApplyResult, error) {
diff --git a/pkg/applyset/prune.go b/pkg/applyset/prune.go
index ab09105..e963f6d 100644
--- a/pkg/applyset/prune.go
+++ b/pkg/applyset/prune.go
@@ -36,14 +36,6 @@ import (
 	"k8s.io/client-go/dynamic"
 )
 
-const (
-	// This is set to an arbitrary number here for now.
-	// This ensures we are no unbounded when pruning many GVKs.
-	// Could be parameterized later on
-	// TODO (barney-s): Possible parameterization target
-	PruneGVKParallelizationLimit = 1
-)
-
 // PruneObject is an apiserver object that should be deleted as part of prune.
 type PruneObject struct {
 	*unstructured.Unstructured
@@ -124,7 +116,7 @@ func (a *applySet) findAllObjectsToPrune(
 		}
 	}
 
-	if PruneGVKParallelizationLimit <= 1 {
+	if a.concurrency <= 1 {
 		for i := range tasks {
 			task := tasks[i]
 			results, err := a.findObjectsToPrune(ctx, dynamicClient, visitedUIDs, task.namespace, task.restMapping)
@@ -135,7 +127,7 @@ func (a *applySet) findAllObjectsToPrune(
 		}
 	} else {
 		group, ctx := errgroup.WithContext(ctx)
-		group.SetLimit(PruneGVKParallelizationLimit)
+		group.SetLimit(a.concurrency)
 		for i := range tasks {
 			task := tasks[i]
 			group.Go(func() error {
diff --git a/pkg/client/crd.go b/pkg/client/crd.go
index 048867a..04a3a6c 100644
--- a/pkg/client/crd.go
+++ b/pkg/client/crd.go
@@ -20,6 +20,7 @@ import (
 	"fmt"
 	"time"
 
+	"github.com/kubernetes-sigs/kro/pkg/metadata"
 	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
 	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1"
 	apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -113,7 +114,7 @@ func newCRDWrapper(cfg CRDWrapperConfig) *CRDWrapper {
 // breaking changes.
 func (w *CRDWrapper) Ensure(ctx context.Context, crd v1.CustomResourceDefinition) error {
 	log := logr.FromContext(ctx)
-	_, err := w.Get(ctx, crd.Name)
+	existing, err := w.Get(ctx, crd.Name)
 	if err != nil {
 		if !apierrors.IsNotFound(err) {
 			return fmt.Errorf("failed to check for existing CRD: %w", err)
@@ -124,6 +125,10 @@ func (w *CRDWrapper) Ensure(ctx context.Context, crd v1.CustomResourceDefinition
 			return fmt.Errorf("failed to create CRD: %w", err)
 		}
 	} else {
+		if err := w.verifyOwnership(existing, crd); err != nil {
+			return err
+		}
+
 		log.Info("Updating existing CRD", "name", crd.Name)
 		if err := w.patch(ctx, crd); err != nil {
 			return fmt.Errorf("failed to patch CRD: %w", err)
@@ -195,3 +200,19 @@ func (w *CRDWrapper) waitForReady(ctx context.Context, name string) error {
 			return false, nil
 		})
 }
+
+// verifyOwnership checks that an existing CRD is owned by KRO and by the same
+// ResourceGraphDefinition that is attempting to update it. This prevents conflicts
+// where multiple ResourceGraphDefinitions try to manage the same CRD, or where a
+// CRD created outside of KRO is accidentally overwritten.
+func (w *CRDWrapper) verifyOwnership(existingCRD *v1.CustomResourceDefinition, newCRD v1.CustomResourceDefinition) error {
+	if !metadata.IsKROOwned(existingCRD.ObjectMeta) {
+		return fmt.Errorf("conflict detected: CRD %s already exists and is not owned by KRO", existingCRD.Name)
+	}
+
+	if !metadata.HasMatchingKROOwner(existingCRD.ObjectMeta, newCRD.ObjectMeta) {
+		return fmt.Errorf("conflict detected: CRD %s has ownership by another ResourceGraphDefinition", existingCRD.Name)
+	}
+
+	return nil
+}
diff --git a/pkg/graph/builder.go b/pkg/graph/builder.go
index cf6d589..ee66bf5 100644
--- a/pkg/graph/builder.go
+++ b/pkg/graph/builder.go
@@ -37,6 +37,7 @@ import (
 	"github.com/kubernetes-sigs/kro/pkg/graph/emulator"
 	"github.com/kubernetes-sigs/kro/pkg/graph/parser"
 	"github.com/kubernetes-sigs/kro/pkg/graph/schema"
+	schemaresolver "github.com/kubernetes-sigs/kro/pkg/graph/schema/resolver"
 	"github.com/kubernetes-sigs/kro/pkg/graph/variable"
 	"github.com/kubernetes-sigs/kro/pkg/metadata"
 	"github.com/kubernetes-sigs/kro/pkg/simpleschema"
@@ -46,7 +47,7 @@ import (
 func NewBuilder(
 	clientConfig *rest.Config,
 ) (*Builder, error) {
-	schemaResolver, dc, err := schema.NewCombinedResolver(clientConfig)
+	schemaResolver, dc, err := schemaresolver.NewCombinedResolver(clientConfig)
 	if err != nil {
 		return nil, fmt.Errorf("failed to create schema resolver: %w", err)
 	}
diff --git a/pkg/graph/schema/resolver/metrics.go b/pkg/graph/schema/resolver/metrics.go
new file mode 100644
index 0000000..bb2719a
--- /dev/null
+++ b/pkg/graph/schema/resolver/metrics.go
@@ -0,0 +1,77 @@
+// Copyright 2025 The Kubernetes Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package resolver
+
+import (
+	"github.com/prometheus/client_golang/prometheus"
+)
+
+var (
+	cacheHitsTotal = prometheus.NewCounter(prometheus.CounterOpts{
+		Name: "schema_resolver_cache_hits_total",
+		Help: "Total number of schema resolver cache hits",
+	})
+	cacheMissesTotal = prometheus.NewCounter(prometheus.CounterOpts{
+		Name: "schema_resolver_cache_misses_total",
+		Help: "Total number of schema resolver cache misses",
+	})
+
+	cacheSize = prometheus.NewGauge(prometheus.GaugeOpts{
+		Name: "schema_resolver_cache_size",
+		Help: "Current number of entries in the schema resolver cache",
+	})
+
+	cacheEvictionsTotal = prometheus.NewCounter(prometheus.CounterOpts{
+		Name: "schema_resolver_cache_evictions_total",
+		Help: "Total number of entries evicted from the schema resolver cache",
+	})
+
+	apiCallDuration = prometheus.NewHistogram(prometheus.HistogramOpts{
+		Name:    "schema_resolver_api_call_duration_seconds",
+		Help:    "Duration of API calls to fetch schemas",
+		Buckets: prometheus.ExponentialBuckets(0.01, 2, 10), // 10ms to ~10s
+	})
+
+	singleflightDeduplicatedTotal = prometheus.NewCounter(prometheus.CounterOpts{
+		Name: "schema_resolver_singleflight_deduplicated_total",
+		Help: "Total number of requests that were deduplicated by singleflight",
+	})
+
+	schemaResolutionErrorsTotal = prometheus.NewCounter(prometheus.CounterOpts{
+		Name: "schema_resolver_errors_total",
+		Help: "Total number of schema resolution errors",
+	})
+)
+
+// MustRegister registers the metrics with the given Prometheus registry
+func MustRegister(registry prometheus.Registerer) {
+	registry.MustRegister(
+		cacheHitsTotal,
+		cacheMissesTotal,
+		cacheSize,
+		cacheEvictionsTotal,
+		apiCallDuration,
+		singleflightDeduplicatedTotal,
+		schemaResolutionErrorsTotal,
+	)
+}
+
+// For now, register with the default registry
+//
+// TODO(a-hilaly): rework all kro custom metrics to use a custom registry, and
+// register them all somewhere central.
+func init() {
+	MustRegister(prometheus.DefaultRegisterer)
+}
diff --git a/pkg/graph/schema/resolver.go b/pkg/graph/schema/resolver/resolver.go
similarity index 82%
rename from pkg/graph/schema/resolver.go
rename to pkg/graph/schema/resolver/resolver.go
index e212e2e..acef30c 100644
--- a/pkg/graph/schema/resolver.go
+++ b/pkg/graph/schema/resolver/resolver.go
@@ -12,9 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package schema
+package resolver
 
 import (
+	"time"
+
 	"k8s.io/apiextensions-apiserver/pkg/generated/openapi"
 	"k8s.io/apiserver/pkg/cel/openapi/resolver"
 	"k8s.io/client-go/discovery"
@@ -23,7 +25,8 @@ import (
 )
 
 // NewCombinedResolver creates a new schema resolver that can resolve both core and client types.
-func NewCombinedResolver(clientConfig *rest.Config) (resolver.SchemaResolver, *discovery.DiscoveryClient, error) {
+func NewCombinedResolver(clientConfig *rest.Config) (resolver.SchemaResolver, discovery.DiscoveryInterface, error) {
+	// Create a regular discovery client first
 	discoveryClient, err := discovery.NewDiscoveryClientForConfig(clientConfig)
 	if err != nil {
 		return nil, nil, err
@@ -37,6 +40,12 @@ func NewCombinedResolver(clientConfig *rest.Config) (resolver.SchemaResolver, *d
 		Discovery: discoveryClient,
 	}
 
+	cachedResolver := NewTTLCachedSchemaResolver(
+		clientResolver,
+		500,           // maxSize: enough for 200 CRDs × 2-3 versions
+		5*time.Minute, // TTL: balance between freshness and performance
+	)
+
 	// CoreResolver is a resolver that uses the OpenAPI definitions to resolve
 	// core types. It is used to resolve types that are known at compile time.
 	coreResolver := resolver.NewDefinitionsSchemaResolver(
@@ -44,8 +53,6 @@ func NewCombinedResolver(clientConfig *rest.Config) (resolver.SchemaResolver, *d
 		scheme.Scheme,
 	)
 
-	// Combine the two resolvers to create a single resolver that can resolve
-	// both core and client types.
-	combinedResolver := coreResolver.Combine(clientResolver)
+	combinedResolver := coreResolver.Combine(cachedResolver)
 	return combinedResolver, discoveryClient, nil
 }
diff --git a/pkg/graph/schema/resolver/ttl_cached.go b/pkg/graph/schema/resolver/ttl_cached.go
new file mode 100644
index 0000000..00ee4fe
--- /dev/null
+++ b/pkg/graph/schema/resolver/ttl_cached.go
@@ -0,0 +1,104 @@
+// Copyright 2025 The Kubernetes Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package resolver
+
+import (
+	"time"
+
+	lru "github.com/hashicorp/golang-lru/v2/expirable"
+	"golang.org/x/sync/singleflight"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/apiserver/pkg/cel/openapi/resolver"
+	"k8s.io/kube-openapi/pkg/validation/spec"
+)
+
+// TTLCachedSchemaResolver caches schemas with LRU eviction and time-based expiration
+type TTLCachedSchemaResolver struct {
+	// delegate is the underlying resolver to fetch schemas from when not in cache
+	delegate resolver.SchemaResolver
+
+	// cache with LRU + TTL
+	cache *lru.LRU[schema.GroupVersionKind, *spec.Schema]
+
+	// Deduplicate concurrent requests for the same GVK
+	sf singleflight.Group
+}
+
+// NewTTLCachedSchemaResolver creates a new TTLCachedSchemaResolver with LRU+TTL caching
+func NewTTLCachedSchemaResolver(
+	delegate resolver.SchemaResolver,
+	maxSize int,
+	ttl time.Duration,
+) *TTLCachedSchemaResolver {
+	// Create LRU cache with TTL and eviction callback for metrics
+	cache := lru.NewLRU(
+		maxSize,
+		func(key schema.GroupVersionKind, value *spec.Schema) {
+			cacheEvictionsTotal.Inc()
+		},
+		ttl,
+	)
+
+	return &TTLCachedSchemaResolver{
+		delegate: delegate,
+		cache:    cache,
+	}
+}
+
+// ResolveSchema resolves the schema for the given GroupVersionKind, using the cache if possible.
+// If multiple concurrent requests for the same GVK are made, they will be deduplicated.
+func (c *TTLCachedSchemaResolver) ResolveSchema(gvk schema.GroupVersionKind) (*spec.Schema, error) {
+	// Check cache first
+	if schema, ok := c.cache.Get(gvk); ok {
+		cacheHitsTotal.Inc()
+		return schema, nil
+	}
+
+	cacheMissesTotal.Inc()
+
+	// Use singleflight to ensure only one API call per GVK
+	key := gvk.String()
+	result, err, shared := c.sf.Do(key, func() (interface{}, error) {
+		// Double-check cache inside singleflight (another goroutine might have populated it)
+		if schema, ok := c.cache.Get(gvk); ok {
+			return schema, nil
+		}
+
+		// Actually fetch from delegate
+		start := time.Now()
+		schema, err := c.delegate.ResolveSchema(gvk)
+		apiCallDuration.Observe(time.Since(start).Seconds())
+		if err != nil {
+			schemaResolutionErrorsTotal.Inc()
+			return nil, err
+		}
+
+		// Store in cache (LRU handles eviction automatically)
+		c.cache.Add(gvk, schema)
+		cacheSize.Set(float64(c.cache.Len()))
+
+		return schema, nil
+	})
+
+	if shared {
+		singleflightDeduplicatedTotal.Inc()
+	}
+
+	if err != nil {
+		return nil, err
+	}
+
+	return result.(*spec.Schema), nil
+}
diff --git a/pkg/metadata/labels.go b/pkg/metadata/labels.go
index 6aa4b89..ffe9996 100644
--- a/pkg/metadata/labels.go
+++ b/pkg/metadata/labels.go
@@ -53,6 +53,19 @@ func IsKROOwned(meta metav1.ObjectMeta) bool {
 	return ok && booleanFromString(v)
 }
 
+// HasMatchingKROOwner returns true if resources have the same RGD owner.
+// Note: The caller is responsible for ensuring that KRO labels exist on both
+// resources before calling this function.
+func HasMatchingKROOwner(a, b metav1.ObjectMeta) bool {
+	aOwnerName := a.Labels[ResourceGraphDefinitionNameLabel]
+	aOwnerID := a.Labels[ResourceGraphDefinitionIDLabel]
+
+	bOwnerName := b.Labels[ResourceGraphDefinitionNameLabel]
+	bOwnerID := b.Labels[ResourceGraphDefinitionIDLabel]
+
+	return aOwnerName == bOwnerName && aOwnerID == bOwnerID
+}
+
 // SetKROOwned sets the OwnedLabel to true on the resource.
 func SetKROOwned(meta metav1.ObjectMeta) {
 	setLabel(&meta, OwnedLabel, stringFromBoolean(true))
diff --git a/website/README.md b/website/README.md
index 629b3e8..7a746ae 100644
--- a/website/README.md
+++ b/website/README.md
@@ -45,3 +45,21 @@ $ GIT_USER=<Your GitHub username> yarn deploy
 ```
 
 If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
+
+### Versioning
+
+When a new kro controller version is released, you should also update/release the documentation:
+
+1. **Update `version.json`**  
+    Add the new version to the `version.json` file.
+
+2. **Create a Docusaurus version**  
+    Remove the `v` prefix from your version (e.g., `v0.1.0` → `0.1.0`):
+
+    ```shell
+    version_number=${version#v}
+    npm run docusaurus docs:version $version_number
+    ```
+
+3. **Submit a Pull Request**  
+    Commit your changes and open a PR to publish the new versioned docs.
diff --git a/website/docs/docs/concepts/00-resource-group-definitions.md b/website/docs/docs/concepts/00-resource-group-definitions.md
index 372d7c1..569274e 100644
--- a/website/docs/docs/concepts/00-resource-group-definitions.md
+++ b/website/docs/docs/concepts/00-resource-group-definitions.md
@@ -43,7 +43,7 @@ The `spec` section of a ResourceGraphDefinition contains two main components:
   - Dependencies between resources
   - Conditions for inclusion
   - Readiness criteria
-  - [External References](#resourcegraphdefinition-more-about-resources)
+  - [External References](#using-externalref-to-reference-objects-outside-the-resourcegraphdefinition)
 
 This structure translates to YAML as follows:
 
diff --git a/website/docs/docs/concepts/10-simple-schema.md b/website/docs/docs/concepts/10-simple-schema.md
index 7e5ab96..1686e1c 100644
--- a/website/docs/docs/concepts/10-simple-schema.md
+++ b/website/docs/docs/concepts/10-simple-schema.md
@@ -36,7 +36,7 @@ spec:
       ports: "[]integer"
 
       # Map type
-      env: "map[string]mytype"
+      env: "map[string]myType"
 
     # Custom Types
     types:
diff --git a/website/docs/docs/faq.md b/website/docs/docs/faq.md
index bb44db6..b2b3c68 100644
--- a/website/docs/docs/faq.md
+++ b/website/docs/docs/faq.md
@@ -83,7 +83,7 @@ sidebar_position: 100
    created by KRO instances. 
 
 
-   ![ArgoCD RGD tracked Instance](../../static/img/KRO-ArgoCD-Tracking.png)
+   ![ArgoCD RGD tracked Instance](/img/KRO-ArgoCD-Tracking.png)
    
    Note that the example shown above depicts ArgoCD's default resource tracking 
    via annotations. You may choose to use `annotation+label` or just `label` and 
diff --git a/website/docs/docs/governance.md b/website/docs/docs/governance.md
deleted file mode 100644
index 9d77f10..0000000
--- a/website/docs/docs/governance.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-sidebar_label: "Governance"
-sidebar_position: 150
----
-
-# Governance
-
-**kro** is not a CNCF project, but follows the CNCF governance model,
-which is designed to ensure that the project is run in a transparent
-and inclusive manner. kro is currently governed by a small group of
-maintainers - from Google, Amazon, and Microsoft - who are responsible
-for the overall direction and management of the project, as well as
-for the technical decisions that affect the project.
-
-## Quick links:
-- [Governance model][Governance model]
-- [Maintainers list][Maintainers list]
-- [Code of conduct][Code of conduct]
-- [Contributing guidelines][Contributing guidelines]
-- [License][License] (Apache 2.0)
-
-[Governance model]:https://github.com/kubernetes-sigs/kro/blob/main/GOVERNANCE.md
-[Maintainers list]:https://github.com/kubernetes-sigs/kro/blob/main/MAINTAINERS.md
-[Code of conduct]:https://github.com/kubernetes-sigs/kro/blob/main/CODE_OF_CONDUCT.md
-[License]:https://github.com/kubernetes-sigs/kro/blob/main/LICENSE
-[Contributing guidelines]:https://github.com/kubernetes-sigs/kro/blob/main/CONTRIBUTING.md
\ No newline at end of file
diff --git a/website/docs/docs/overview.md b/website/docs/docs/overview.md
index 575d728..6bfe372 100644
--- a/website/docs/docs/overview.md
+++ b/website/docs/docs/overview.md
@@ -34,7 +34,7 @@ standardized and streamlined manner.
 
 <div align="center">
 
-![End user interface - Custom API](../../../images/architecture-diagrams/KRO-Dev-Interface.png)
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
 _Figure 1: End user interface - Custom API_
 
 </div>
@@ -56,7 +56,7 @@ handles the deployment and configuration of the required resources.
 
 <div align="center">
 
-![Platform Team Interface](../../../images/architecture-diagrams/KRO-Platform-Team.png)
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
 _Figure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
 
 </div>
@@ -74,7 +74,7 @@ requirements.
 
 <div align="center">
 
-![ResourceGraphDefinition Instance](../../../images/architecture-diagrams/KRO-Instance.png)
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
 _Figure 3: ResourceGraphDefinition Instance (RGI)_
 
 </div>
diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts
index 8284327..99ebc40 100644
--- a/website/docusaurus.config.ts
+++ b/website/docusaurus.config.ts
@@ -23,7 +23,11 @@ const config: Config = {
   projectName: "kro", // Usually your repo name.
 
   onBrokenLinks: "throw",
-  onBrokenMarkdownLinks: "warn",
+  markdown: {
+    hooks: {
+      onBrokenMarkdownLinks: "warn",
+    },
+  },
 
   // Even if you don't use internationalization, you can use this field to set
   // useful metadata like html lang. For example, if your site is Chinese, you
@@ -60,13 +64,16 @@ const config: Config = {
           sidebarPath: "./sidebars.ts",
           versions: {
             current: {
-              label: "latest",
+              label: "main",
             },
           },
           // sidebarCollapsed: false,
           // Please change this to your repo.
           // Remove this to remove the "edit this page" links.
           editUrl: "https://github.com/kubernetes-sigs/kro/tree/main/website",
+          disableVersioning: false,
+          includeCurrentVersion: true,
+          lastVersion: "0.4.1",
         },
         blog: false,
         theme: {
@@ -178,7 +185,8 @@ const config: Config = {
           ],
         },
       ],
-      copyright: "kro is a subproject of Kubernetes SIG Cloud Provider. Kubernetes is a CNCF graduated project."
+      copyright:
+        "kro is a subproject of Kubernetes SIG Cloud Provider. Kubernetes is a CNCF graduated project.",
     },
     /* announcementBar: {
       id: `beta announcement`,
diff --git a/website/package-lock.json b/website/package-lock.json
index 224f73e..4419338 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -8,8 +8,8 @@
       "name": "kro-docs",
       "version": "0.0.0",
       "dependencies": {
-        "@docusaurus/core": "^3.6.1",
-        "@docusaurus/preset-classic": "^3.6.1",
+        "@docusaurus/core": "^3.9.1",
+        "@docusaurus/preset-classic": "^3.9.1",
         "@mdx-js/react": "^3.0.0",
         "clsx": "^2.0.0",
         "docusaurus-lunr-search": "^3.4.0",
@@ -20,234 +20,226 @@
         "react-dom": "^18.0.0"
       },
       "devDependencies": {
-        "@docusaurus/module-type-aliases": "^3.6.1",
-        "@docusaurus/tsconfig": "^3.6.1",
-        "@docusaurus/types": "^3.6.1",
+        "@docusaurus/module-type-aliases": "^3.9.1",
+        "@docusaurus/tsconfig": "^3.9.1",
+        "@docusaurus/types": "^3.9.1",
         "typescript": "~5.2.2"
       },
       "engines": {
         "node": ">=18.0"
       }
     },
-    "node_modules/@algolia/autocomplete-core": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.6.tgz",
-      "integrity": "sha512-lkDoW4I7h2kKlIgf3pUt1LqvxyYKkVyiypoGLlUnhPSnCpmeOwudM6rNq6YYsCmdQtnDQoW5lUNNuj6ASg3qeg==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/autocomplete-plugin-algolia-insights": "1.17.6",
-        "@algolia/autocomplete-shared": "1.17.6"
-      }
-    },
-    "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.6.tgz",
-      "integrity": "sha512-17NnaacuFzSWVuZu4NKzVeaFIe9Abpw8w+/gjc7xhZFtqj+GadufzodIdchwiB2eM2cDdiR3icW7gbNTB3K2YA==",
-      "license": "MIT",
+    "node_modules/@ai-sdk/gateway": {
+      "version": "1.0.36",
+      "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-1.0.36.tgz",
+      "integrity": "sha512-G/CLHzyOy9mhbimSBmV+o59M7ao/NfRFrrhC+eHGp+0qT0diP3IDW5VdkPHKFmDp4Iq7wb4/yOCe7Yk2fQtSrg==",
+      "license": "Apache-2.0",
       "dependencies": {
-        "@algolia/autocomplete-shared": "1.17.6"
+        "@ai-sdk/provider": "2.0.0",
+        "@ai-sdk/provider-utils": "3.0.11",
+        "@vercel/oidc": "3.0.2"
+      },
+      "engines": {
+        "node": ">=18"
       },
       "peerDependencies": {
-        "search-insights": ">= 1 < 3"
+        "zod": "^3.25.76 || ^4.1.8"
       }
     },
-    "node_modules/@algolia/autocomplete-preset-algolia": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.6.tgz",
-      "integrity": "sha512-Cvg5JENdSCMuClwhJ1ON1/jSuojaYMiUW2KePm18IkdCzPJj/NXojaOxw58RFtQFpJgfVW8h2E8mEoDtLlMdeA==",
-      "license": "MIT",
+    "node_modules/@ai-sdk/provider": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz",
+      "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==",
+      "license": "Apache-2.0",
       "dependencies": {
-        "@algolia/autocomplete-shared": "1.17.6"
+        "json-schema": "^0.4.0"
       },
-      "peerDependencies": {
-        "@algolia/client-search": ">= 4.9.1 < 6",
-        "algoliasearch": ">= 4.9.1 < 6"
-      }
-    },
-    "node_modules/@algolia/autocomplete-shared": {
-      "version": "1.17.6",
-      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.6.tgz",
-      "integrity": "sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==",
-      "license": "MIT",
-      "peerDependencies": {
-        "@algolia/client-search": ">= 4.9.1 < 6",
-        "algoliasearch": ">= 4.9.1 < 6"
+      "engines": {
+        "node": ">=18"
       }
     },
-    "node_modules/@algolia/cache-browser-local-storage": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz",
-      "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==",
-      "license": "MIT",
+    "node_modules/@ai-sdk/provider-utils": {
+      "version": "3.0.11",
+      "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.11.tgz",
+      "integrity": "sha512-4hgHj89VqyOHzGaV85TkcgvO8WjecVF35TOUVg+C56vnzpWSgdIZu/ZWZNdZ6BTrv8y0N1toBWW7XcWiRRicLg==",
+      "license": "Apache-2.0",
       "dependencies": {
-        "@algolia/cache-common": "4.24.0"
+        "@ai-sdk/provider": "2.0.0",
+        "@standard-schema/spec": "^1.0.0",
+        "eventsource-parser": "^3.0.5"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "zod": "^3.25.76 || ^4.1.8"
       }
     },
-    "node_modules/@algolia/cache-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz",
-      "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==",
-      "license": "MIT"
-    },
-    "node_modules/@algolia/cache-in-memory": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz",
-      "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==",
-      "license": "MIT",
+    "node_modules/@ai-sdk/react": {
+      "version": "2.0.65",
+      "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.65.tgz",
+      "integrity": "sha512-GV1gf6MU9iHXDukgKO2Pb79Nn6UFS5fT5MLFHgR8o9OklhwFsOguIG0S5YhngsvTFC3U0fX2kFulN3RnX5D0Fg==",
+      "license": "Apache-2.0",
       "dependencies": {
-        "@algolia/cache-common": "4.24.0"
+        "@ai-sdk/provider-utils": "3.0.11",
+        "ai": "5.0.65",
+        "swr": "^2.2.5",
+        "throttleit": "2.1.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "react": "^18 || ^19 || ^19.0.0-rc",
+        "zod": "^3.25.76 || ^4.1.8"
+      },
+      "peerDependenciesMeta": {
+        "zod": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@algolia/client-abtesting": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.13.0.tgz",
-      "integrity": "sha512-6CoQjlMi1pmQYMQO8tXfuGxSPf6iKX5FP9MuMe6IWmvC81wwTvOehnwchyBl2wuPVhcw2Ar53K53mQ60DAC64g==",
+    "node_modules/@algolia/abtesting": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.6.0.tgz",
+      "integrity": "sha512-c4M/Z/KWkEG+RHpZsWKDTTlApXu3fe4vlABNcpankWBhdMe4oPZ/r4JxEr2zKUP6K+BT66tnp8UbHmgOd/vvqQ==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
-    "node_modules/@algolia/client-account": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz",
-      "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-account/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
+    "node_modules/@algolia/autocomplete-core": {
+      "version": "1.19.2",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.2.tgz",
+      "integrity": "sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
+        "@algolia/autocomplete-plugin-algolia-insights": "1.19.2",
+        "@algolia/autocomplete-shared": "1.19.2"
       }
     },
-    "node_modules/@algolia/client-account/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
+    "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
+      "version": "1.19.2",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.2.tgz",
+      "integrity": "sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
+        "@algolia/autocomplete-shared": "1.19.2"
+      },
+      "peerDependencies": {
+        "search-insights": ">= 1 < 3"
       }
     },
-    "node_modules/@algolia/client-analytics": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz",
-      "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==",
+    "node_modules/@algolia/autocomplete-shared": {
+      "version": "1.19.2",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.2.tgz",
+      "integrity": "sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==",
       "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
+      "peerDependencies": {
+        "@algolia/client-search": ">= 4.9.1 < 6",
+        "algoliasearch": ">= 4.9.1 < 6"
       }
     },
-    "node_modules/@algolia/client-analytics/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
+    "node_modules/@algolia/client-abtesting": {
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.40.0.tgz",
+      "integrity": "sha512-qegVlgHtmiS8m9nEsuKUVhlw1FHsIshtt5nhNnA6EYz3g+tm9+xkVZZMzkrMLPP7kpoheHJZAwz2MYnHtwFa9A==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
+      },
+      "engines": {
+        "node": ">= 14.0.0"
       }
     },
-    "node_modules/@algolia/client-analytics/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
+    "node_modules/@algolia/client-analytics": {
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.40.0.tgz",
+      "integrity": "sha512-Dw2c+6KGkw7mucnnxPyyMsIGEY8+hqv6oB+viYB612OMM3l8aNaWToBZMnNvXsyP+fArwq7XGR+k3boPZyV53A==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
+      },
+      "engines": {
+        "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/client-common": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.13.0.tgz",
-      "integrity": "sha512-2SP6bGGWOTN920MLZv8s7yIR3OqY03vEe4U+vb2MGdL8a/8EQznF3L/nTC/rGf/hvEfZlX2tGFxPJaF2waravg==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.40.0.tgz",
+      "integrity": "sha512-dbE4+MJIDsTghG3hUYWBq7THhaAmqNqvW9g2vzwPf5edU4IRmuYpKtY3MMotes8/wdTasWG07XoaVhplJBlvdg==",
       "license": "MIT",
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/client-insights": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.13.0.tgz",
-      "integrity": "sha512-ldHTe+LVgC6L4Wr6doAQQ7Ku0jAdhaaPg1T+IHzmmiRZb2Uq5OsjW2yC65JifOmzPCiMkIZE2mGRpWgkn5ktlw==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.40.0.tgz",
+      "integrity": "sha512-SH6zlROyGUCDDWg71DlCnbbZ/zEHYPZC8k901EAaBVhvY43Ju8Wa6LAcMPC4tahcDBgkG2poBy8nJZXvwEWAlQ==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/client-personalization": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz",
-      "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.40.0.tgz",
+      "integrity": "sha512-EgHjJEEf7CbUL9gJHI1ULmAtAFeym2cFNSAi1uwHelWgLPcnLjYW2opruPxigOV7NcetkGu+t2pcWOWmZFuvKQ==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/client-personalization/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
+      },
+      "engines": {
+        "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/client-query-suggestions": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.13.0.tgz",
-      "integrity": "sha512-pYo0jbLUtPDN1r341UHTaF2fgN5rbaZfDZqjPRKPM+FRlRmxFxqFQm1UUfpkSUWYGn7lECwDpbKYiKUf81MTwA==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.40.0.tgz",
+      "integrity": "sha512-HvE1jtCag95DR41tDh7cGwrMk4X0aQXPOBIhZRmsBPolMeqRJz0kvfVw8VCKvA1uuoAkjFfTG0X0IZED+rKXoA==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/client-search": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.13.0.tgz",
-      "integrity": "sha512-s2ge3uZ6Zg2sPSFibqijgEYsuorxcc8KVHg3I95nOPHvFHdnBtSHymhZvq4sp/fu8ijt/Y8jLwkuqm5myn+2Sg==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.40.0.tgz",
+      "integrity": "sha512-nlr/MMgoLNUHcfWC5Ns2ENrzKx9x51orPc6wJ8Ignv1DsrUmKm0LUih+Tj3J+kxYofzqQIQRU495d4xn3ozMbg==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
@@ -260,213 +252,125 @@
       "license": "MIT"
     },
     "node_modules/@algolia/ingestion": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.13.0.tgz",
-      "integrity": "sha512-fm5LEOe4FPDOc1D+M9stEs8hfcdmbdD+pt9og5shql6ueTZJANDbFoQhDOpiPJizR/ps1GwmjkWfUEywx3sV+Q==",
+      "version": "1.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.40.0.tgz",
+      "integrity": "sha512-OfHnhE+P0f+p3i90Kmshf9Epgesw5oPV1IEUOY4Mq1HV7cQk16gvklVN1EaY/T9sVavl+Vc3g4ojlfpIwZFA4g==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
-    "node_modules/@algolia/logger-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz",
-      "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==",
-      "license": "MIT"
-    },
-    "node_modules/@algolia/logger-console": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz",
-      "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/logger-common": "4.24.0"
-      }
-    },
     "node_modules/@algolia/monitoring": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.13.0.tgz",
-      "integrity": "sha512-e8Hshlnm2G5fapyUgWTBwhJ22yXcnLtPC4LWZKx7KOvv35GcdoHtlUBX94I/sWCJLraUr65JvR8qOo3LXC43dg==",
+      "version": "1.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.40.0.tgz",
+      "integrity": "sha512-SWANV32PTKhBYvwKozeWP9HOnVabOixAuPdFFGoqtysTkkwutrtGI/rrh80tvG+BnQAmZX0vUmD/RqFZVfr/Yg==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/recommend": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz",
-      "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-browser-local-storage": "4.24.0",
-        "@algolia/cache-common": "4.24.0",
-        "@algolia/cache-in-memory": "4.24.0",
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/logger-common": "4.24.0",
-        "@algolia/logger-console": "4.24.0",
-        "@algolia/requester-browser-xhr": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/requester-node-http": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/requester-browser-xhr": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
-      "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0"
-      }
-    },
-    "node_modules/@algolia/recommend/node_modules/@algolia/requester-node-http": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
-      "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.40.0.tgz",
+      "integrity": "sha512-1Qxy9I5bSb3mrhPk809DllMa561zl5hLsMR6YhIqNkqQ0OyXXQokvJ2zApSxvd39veRZZnhN+oGe+XNoNwLgkw==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/requester-common": "4.24.0"
+        "@algolia/client-common": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
+      },
+      "engines": {
+        "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/requester-browser-xhr": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.13.0.tgz",
-      "integrity": "sha512-NV6oSCt5lFuzfsVQoSBpewEWf/h4ySr7pv2bfwu9yF/jc/g39pig8+YpuqsxlRWBm/lTGVA2V0Ai9ySwrNumIA==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.40.0.tgz",
+      "integrity": "sha512-MGt94rdHfkrVjfN/KwUfWcnaeohYbWGINrPs96f5J7ZyRYpVLF+VtPQ2FmcddFvK4gnKXSu8BAi81hiIhUpm3w==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0"
+        "@algolia/client-common": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
-    "node_modules/@algolia/requester-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz",
-      "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==",
-      "license": "MIT"
-    },
     "node_modules/@algolia/requester-fetch": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.13.0.tgz",
-      "integrity": "sha512-094bK4rumf+rXJazxv3mq6eKRM0ep5AxIo8T0YmOdldswQt79apeufFiPLN19nHEWH22xR2FelimD+T/wRSP+Q==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.40.0.tgz",
+      "integrity": "sha512-wXQ05JZZ10Dr642QVAkAZ4ZZlU+lh5r6dIBGmm9WElz+1EaQ6BNYtEOTV6pkXuFYsZpeJA89JpDOiwBOP9j24w==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0"
+        "@algolia/client-common": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
     "node_modules/@algolia/requester-node-http": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.13.0.tgz",
-      "integrity": "sha512-JY5xhEYMgki53Wm+A6R2jUpOUdD0zZnBq+PC5R1TGMNOYL1s6JjDrJeMsvaI2YWxYMUSoCnRoltN/yf9RI8n3A==",
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.40.0.tgz",
+      "integrity": "sha512-5qCRoySnzpbQVg2IPLGFCm4LF75pToxI5tdjOYgUMNL/um91aJ4dH3SVdBEuFlVsalxl8mh3bWPgkUmv6NpJiQ==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0"
+        "@algolia/client-common": "5.40.0"
       },
       "engines": {
         "node": ">= 14.0.0"
       }
     },
-    "node_modules/@algolia/transporter": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz",
-      "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-common": "4.24.0",
-        "@algolia/logger-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0"
-      }
-    },
-    "node_modules/@ampproject/remapping": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
-      "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
-      }
-    },
     "node_modules/@babel/code-frame": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
-      "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+      "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-validator-identifier": "^7.25.9",
+        "@babel/helper-validator-identifier": "^7.27.1",
         "js-tokens": "^4.0.0",
-        "picocolors": "^1.0.0"
+        "picocolors": "^1.1.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/compat-data": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
-      "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz",
+      "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/core": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz",
-      "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==",
-      "license": "MIT",
-      "dependencies": {
-        "@ampproject/remapping": "^2.2.0",
-        "@babel/code-frame": "^7.26.0",
-        "@babel/generator": "^7.26.0",
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-module-transforms": "^7.26.0",
-        "@babel/helpers": "^7.26.0",
-        "@babel/parser": "^7.26.0",
-        "@babel/template": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.26.0",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
+      "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.27.1",
+        "@babel/generator": "^7.28.3",
+        "@babel/helper-compilation-targets": "^7.27.2",
+        "@babel/helper-module-transforms": "^7.28.3",
+        "@babel/helpers": "^7.28.4",
+        "@babel/parser": "^7.28.4",
+        "@babel/template": "^7.27.2",
+        "@babel/traverse": "^7.28.4",
+        "@babel/types": "^7.28.4",
+        "@jridgewell/remapping": "^2.3.5",
         "convert-source-map": "^2.0.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
@@ -491,15 +395,15 @@
       }
     },
     "node_modules/@babel/generator": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
-      "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
+      "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^7.26.2",
-        "@babel/types": "^7.26.0",
-        "@jridgewell/gen-mapping": "^0.3.5",
-        "@jridgewell/trace-mapping": "^0.3.25",
+        "@babel/parser": "^7.28.3",
+        "@babel/types": "^7.28.2",
+        "@jridgewell/gen-mapping": "^0.3.12",
+        "@jridgewell/trace-mapping": "^0.3.28",
         "jsesc": "^3.0.2"
       },
       "engines": {
@@ -507,38 +411,25 @@
       }
     },
     "node_modules/@babel/helper-annotate-as-pure": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
-      "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
-    "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz",
-      "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==",
+      "version": "7.27.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+      "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
+        "@babel/types": "^7.27.3"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-compilation-targets": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz",
-      "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==",
+      "version": "7.27.2",
+      "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+      "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/compat-data": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
+        "@babel/compat-data": "^7.27.2",
+        "@babel/helper-validator-option": "^7.27.1",
         "browserslist": "^4.24.0",
         "lru-cache": "^5.1.1",
         "semver": "^6.3.1"
@@ -557,17 +448,17 @@
       }
     },
     "node_modules/@babel/helper-create-class-features-plugin": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz",
-      "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz",
+      "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-member-expression-to-functions": "^7.25.9",
-        "@babel/helper-optimise-call-expression": "^7.25.9",
-        "@babel/helper-replace-supers": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
+        "@babel/helper-annotate-as-pure": "^7.27.3",
+        "@babel/helper-member-expression-to-functions": "^7.27.1",
+        "@babel/helper-optimise-call-expression": "^7.27.1",
+        "@babel/helper-replace-supers": "^7.27.1",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+        "@babel/traverse": "^7.28.3",
         "semver": "^6.3.1"
       },
       "engines": {
@@ -587,13 +478,13 @@
       }
     },
     "node_modules/@babel/helper-create-regexp-features-plugin": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz",
-      "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz",
+      "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "regexpu-core": "^6.1.1",
+        "@babel/helper-annotate-as-pure": "^7.27.1",
+        "regexpu-core": "^6.2.0",
         "semver": "^6.3.1"
       },
       "engines": {
@@ -613,56 +504,65 @@
       }
     },
     "node_modules/@babel/helper-define-polyfill-provider": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz",
-      "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==",
+      "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz",
+      "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-compilation-targets": "^7.22.6",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "debug": "^4.1.1",
+        "@babel/helper-compilation-targets": "^7.27.2",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "debug": "^4.4.1",
         "lodash.debounce": "^4.0.8",
-        "resolve": "^1.14.2"
+        "resolve": "^1.22.10"
       },
       "peerDependencies": {
         "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
       }
     },
+    "node_modules/@babel/helper-globals": {
+      "version": "7.28.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+      "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
     "node_modules/@babel/helper-member-expression-to-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
-      "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
+      "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
+        "@babel/traverse": "^7.27.1",
+        "@babel/types": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-module-imports": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
-      "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+      "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
       "license": "MIT",
       "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
+        "@babel/traverse": "^7.27.1",
+        "@babel/types": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-module-transforms": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
-      "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+      "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-validator-identifier": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-module-imports": "^7.27.1",
+        "@babel/helper-validator-identifier": "^7.27.1",
+        "@babel/traverse": "^7.28.3"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -672,35 +572,35 @@
       }
     },
     "node_modules/@babel/helper-optimise-call-expression": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
-      "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
+      "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/types": "^7.25.9"
+        "@babel/types": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-plugin-utils": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz",
-      "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+      "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-remap-async-to-generator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz",
-      "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz",
+      "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-wrap-function": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-annotate-as-pure": "^7.27.1",
+        "@babel/helper-wrap-function": "^7.27.1",
+        "@babel/traverse": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -710,14 +610,14 @@
       }
     },
     "node_modules/@babel/helper-replace-supers": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz",
-      "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
+      "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-member-expression-to-functions": "^7.25.9",
-        "@babel/helper-optimise-call-expression": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-member-expression-to-functions": "^7.27.1",
+        "@babel/helper-optimise-call-expression": "^7.27.1",
+        "@babel/traverse": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -726,93 +626,80 @@
         "@babel/core": "^7.0.0"
       }
     },
-    "node_modules/@babel/helper-simple-access": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz",
-      "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      }
-    },
     "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
-      "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
+      "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
+        "@babel/traverse": "^7.27.1",
+        "@babel/types": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-string-parser": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
-      "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+      "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-validator-identifier": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
-      "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+      "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-validator-option": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
-      "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+      "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
       "license": "MIT",
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helper-wrap-function": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz",
-      "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz",
+      "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==",
       "license": "MIT",
       "dependencies": {
-        "@babel/template": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "@babel/types": "^7.25.9"
+        "@babel/template": "^7.27.2",
+        "@babel/traverse": "^7.28.3",
+        "@babel/types": "^7.28.2"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "7.26.10",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz",
-      "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+      "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
       "license": "MIT",
       "dependencies": {
-        "@babel/template": "^7.26.9",
-        "@babel/types": "^7.26.10"
+        "@babel/template": "^7.27.2",
+        "@babel/types": "^7.28.4"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.26.10",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
-      "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
+      "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/types": "^7.26.10"
+        "@babel/types": "^7.28.4"
       },
       "bin": {
         "parser": "bin/babel-parser.js"
@@ -822,13 +709,13 @@
       }
     },
     "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz",
-      "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz",
+      "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/traverse": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -838,12 +725,12 @@
       }
     },
     "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz",
-      "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz",
+      "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -853,12 +740,12 @@
       }
     },
     "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz",
-      "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz",
+      "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -868,14 +755,14 @@
       }
     },
     "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz",
-      "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz",
+      "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-        "@babel/plugin-transform-optional-chaining": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+        "@babel/plugin-transform-optional-chaining": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -885,13 +772,13 @@
       }
     },
     "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz",
-      "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz",
+      "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/traverse": "^7.28.3"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -925,12 +812,12 @@
       }
     },
     "node_modules/@babel/plugin-syntax-import-assertions": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz",
-      "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz",
+      "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -940,12 +827,12 @@
       }
     },
     "node_modules/@babel/plugin-syntax-import-attributes": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz",
-      "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
+      "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -955,12 +842,12 @@
       }
     },
     "node_modules/@babel/plugin-syntax-jsx": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
-      "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
+      "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -970,12 +857,12 @@
       }
     },
     "node_modules/@babel/plugin-syntax-typescript": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
-      "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
+      "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1001,12 +888,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-arrow-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz",
-      "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz",
+      "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1016,14 +903,14 @@
       }
     },
     "node_modules/@babel/plugin-transform-async-generator-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz",
-      "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==",
+      "version": "7.28.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz",
+      "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-remap-async-to-generator": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-remap-async-to-generator": "^7.27.1",
+        "@babel/traverse": "^7.28.0"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1033,14 +920,14 @@
       }
     },
     "node_modules/@babel/plugin-transform-async-to-generator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz",
-      "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz",
+      "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-remap-async-to-generator": "^7.25.9"
+        "@babel/helper-module-imports": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-remap-async-to-generator": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1050,12 +937,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz",
-      "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz",
+      "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1065,12 +952,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-block-scoping": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz",
-      "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz",
+      "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1080,13 +967,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-class-properties": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz",
-      "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz",
+      "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-class-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1096,13 +983,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-class-static-block": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz",
-      "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz",
+      "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-class-features-plugin": "^7.28.3",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1112,17 +999,17 @@
       }
     },
     "node_modules/@babel/plugin-transform-classes": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz",
-      "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz",
+      "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-replace-supers": "^7.25.9",
-        "@babel/traverse": "^7.25.9",
-        "globals": "^11.1.0"
+        "@babel/helper-annotate-as-pure": "^7.27.3",
+        "@babel/helper-compilation-targets": "^7.27.2",
+        "@babel/helper-globals": "^7.28.0",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-replace-supers": "^7.27.1",
+        "@babel/traverse": "^7.28.4"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1132,13 +1019,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-computed-properties": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz",
-      "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz",
+      "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/template": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/template": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1148,12 +1035,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-destructuring": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz",
-      "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==",
+      "version": "7.28.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz",
+      "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/traverse": "^7.28.0"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1163,13 +1051,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-dotall-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz",
-      "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz",
+      "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1179,12 +1067,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-duplicate-keys": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz",
-      "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz",
+      "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1194,13 +1082,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz",
-      "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz",
+      "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1210,12 +1098,28 @@
       }
     },
     "node_modules/@babel/plugin-transform-dynamic-import": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz",
-      "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz",
+      "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-plugin-utils": "^7.27.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      },
+      "peerDependencies": {
+        "@babel/core": "^7.0.0-0"
+      }
+    },
+    "node_modules/@babel/plugin-transform-explicit-resource-management": {
+      "version": "7.28.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz",
+      "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/plugin-transform-destructuring": "^7.28.0"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1225,13 +1129,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz",
-      "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
+      "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1241,12 +1144,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-export-namespace-from": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz",
-      "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz",
+      "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1256,13 +1159,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-for-of": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz",
-      "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz",
+      "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1272,14 +1175,14 @@
       }
     },
     "node_modules/@babel/plugin-transform-function-name": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz",
-      "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
+      "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-compilation-targets": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/traverse": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1289,12 +1192,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-json-strings": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz",
-      "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz",
+      "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1304,12 +1207,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz",
-      "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz",
+      "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1319,12 +1222,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-logical-assignment-operators": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz",
-      "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz",
+      "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1334,12 +1237,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-member-expression-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz",
-      "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz",
+      "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1349,13 +1252,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-modules-amd": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz",
-      "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz",
+      "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-module-transforms": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1365,14 +1268,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-modules-commonjs": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz",
-      "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
+      "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-simple-access": "^7.25.9"
+        "@babel/helper-module-transforms": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1382,15 +1284,15 @@
       }
     },
     "node_modules/@babel/plugin-transform-modules-systemjs": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz",
-      "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz",
+      "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-identifier": "^7.25.9",
-        "@babel/traverse": "^7.25.9"
+        "@babel/helper-module-transforms": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-validator-identifier": "^7.27.1",
+        "@babel/traverse": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1400,13 +1302,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-modules-umd": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz",
-      "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz",
+      "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-module-transforms": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-module-transforms": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1416,13 +1318,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz",
-      "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz",
+      "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1432,12 +1334,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-new-target": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz",
-      "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz",
+      "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1447,12 +1349,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz",
-      "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz",
+      "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1462,12 +1364,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-numeric-separator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz",
-      "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz",
+      "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1477,14 +1379,16 @@
       }
     },
     "node_modules/@babel/plugin-transform-object-rest-spread": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz",
-      "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz",
+      "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/plugin-transform-parameters": "^7.25.9"
+        "@babel/helper-compilation-targets": "^7.27.2",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/plugin-transform-destructuring": "^7.28.0",
+        "@babel/plugin-transform-parameters": "^7.27.7",
+        "@babel/traverse": "^7.28.4"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1494,13 +1398,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-object-super": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz",
-      "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz",
+      "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-replace-supers": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-replace-supers": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1510,12 +1414,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-optional-catch-binding": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz",
-      "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz",
+      "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1525,13 +1429,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-optional-chaining": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz",
-      "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz",
+      "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1541,12 +1445,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-parameters": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz",
-      "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==",
+      "version": "7.27.7",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz",
+      "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1556,13 +1460,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-private-methods": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz",
-      "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz",
+      "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-class-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1572,14 +1476,14 @@
       }
     },
     "node_modules/@babel/plugin-transform-private-property-in-object": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz",
-      "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz",
+      "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-annotate-as-pure": "^7.27.1",
+        "@babel/helper-create-class-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1589,12 +1493,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-property-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz",
-      "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz",
+      "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1604,12 +1508,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-react-constant-elements": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz",
-      "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.27.1.tgz",
+      "integrity": "sha512-edoidOjl/ZxvYo4lSBOQGDSyToYVkTAwyVoa2tkuYTSmjrB1+uAedoL5iROVLXkxH+vRgA7uP4tMg2pUJpZ3Ug==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1619,12 +1523,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-react-display-name": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz",
-      "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==",
+      "version": "7.28.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz",
+      "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1634,16 +1538,16 @@
       }
     },
     "node_modules/@babel/plugin-transform-react-jsx": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz",
-      "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz",
+      "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/plugin-syntax-jsx": "^7.25.9",
-        "@babel/types": "^7.25.9"
+        "@babel/helper-annotate-as-pure": "^7.27.1",
+        "@babel/helper-module-imports": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/plugin-syntax-jsx": "^7.27.1",
+        "@babel/types": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1653,12 +1557,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-react-jsx-development": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz",
-      "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz",
+      "integrity": "sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/plugin-transform-react-jsx": "^7.25.9"
+        "@babel/plugin-transform-react-jsx": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1668,13 +1572,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-react-pure-annotations": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz",
-      "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz",
+      "integrity": "sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-annotate-as-pure": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1684,13 +1588,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-regenerator": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz",
-      "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz",
+      "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "regenerator-transform": "^0.15.2"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1700,13 +1603,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-regexp-modifiers": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz",
-      "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz",
+      "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1716,12 +1619,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-reserved-words": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz",
-      "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz",
+      "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1731,16 +1634,16 @@
       }
     },
     "node_modules/@babel/plugin-transform-runtime": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz",
-      "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.3.tgz",
+      "integrity": "sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-module-imports": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "babel-plugin-polyfill-corejs2": "^0.4.10",
-        "babel-plugin-polyfill-corejs3": "^0.10.6",
-        "babel-plugin-polyfill-regenerator": "^0.6.1",
+        "@babel/helper-module-imports": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "babel-plugin-polyfill-corejs2": "^0.4.14",
+        "babel-plugin-polyfill-corejs3": "^0.13.0",
+        "babel-plugin-polyfill-regenerator": "^0.6.5",
         "semver": "^6.3.1"
       },
       "engines": {
@@ -1760,12 +1663,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-shorthand-properties": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz",
-      "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz",
+      "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1775,13 +1678,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-spread": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz",
-      "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz",
+      "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1791,12 +1694,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-sticky-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz",
-      "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
+      "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1806,12 +1709,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-template-literals": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz",
-      "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz",
+      "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1821,12 +1724,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-typeof-symbol": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz",
-      "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz",
+      "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1836,16 +1739,16 @@
       }
     },
     "node_modules/@babel/plugin-transform-typescript": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz",
-      "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==",
+      "version": "7.28.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz",
+      "integrity": "sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-annotate-as-pure": "^7.25.9",
-        "@babel/helper-create-class-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
-        "@babel/plugin-syntax-typescript": "^7.25.9"
+        "@babel/helper-annotate-as-pure": "^7.27.3",
+        "@babel/helper-create-class-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+        "@babel/plugin-syntax-typescript": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1855,12 +1758,12 @@
       }
     },
     "node_modules/@babel/plugin-transform-unicode-escapes": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz",
-      "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz",
+      "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1870,13 +1773,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-unicode-property-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz",
-      "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz",
+      "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1886,13 +1789,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-unicode-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz",
-      "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz",
+      "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1902,13 +1805,13 @@
       }
     },
     "node_modules/@babel/plugin-transform-unicode-sets-regex": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz",
-      "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz",
+      "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-create-regexp-features-plugin": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9"
+        "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+        "@babel/helper-plugin-utils": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -1918,79 +1821,80 @@
       }
     },
     "node_modules/@babel/preset-env": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz",
-      "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/compat-data": "^7.26.0",
-        "@babel/helper-compilation-targets": "^7.25.9",
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
-        "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9",
-        "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9",
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9",
-        "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9",
+      "version": "7.28.3",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz",
+      "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/compat-data": "^7.28.0",
+        "@babel/helper-compilation-targets": "^7.27.2",
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-validator-option": "^7.27.1",
+        "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1",
+        "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
+        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
+        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
+        "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3",
         "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
-        "@babel/plugin-syntax-import-assertions": "^7.26.0",
-        "@babel/plugin-syntax-import-attributes": "^7.26.0",
+        "@babel/plugin-syntax-import-assertions": "^7.27.1",
+        "@babel/plugin-syntax-import-attributes": "^7.27.1",
         "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
-        "@babel/plugin-transform-arrow-functions": "^7.25.9",
-        "@babel/plugin-transform-async-generator-functions": "^7.25.9",
-        "@babel/plugin-transform-async-to-generator": "^7.25.9",
-        "@babel/plugin-transform-block-scoped-functions": "^7.25.9",
-        "@babel/plugin-transform-block-scoping": "^7.25.9",
-        "@babel/plugin-transform-class-properties": "^7.25.9",
-        "@babel/plugin-transform-class-static-block": "^7.26.0",
-        "@babel/plugin-transform-classes": "^7.25.9",
-        "@babel/plugin-transform-computed-properties": "^7.25.9",
-        "@babel/plugin-transform-destructuring": "^7.25.9",
-        "@babel/plugin-transform-dotall-regex": "^7.25.9",
-        "@babel/plugin-transform-duplicate-keys": "^7.25.9",
-        "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9",
-        "@babel/plugin-transform-dynamic-import": "^7.25.9",
-        "@babel/plugin-transform-exponentiation-operator": "^7.25.9",
-        "@babel/plugin-transform-export-namespace-from": "^7.25.9",
-        "@babel/plugin-transform-for-of": "^7.25.9",
-        "@babel/plugin-transform-function-name": "^7.25.9",
-        "@babel/plugin-transform-json-strings": "^7.25.9",
-        "@babel/plugin-transform-literals": "^7.25.9",
-        "@babel/plugin-transform-logical-assignment-operators": "^7.25.9",
-        "@babel/plugin-transform-member-expression-literals": "^7.25.9",
-        "@babel/plugin-transform-modules-amd": "^7.25.9",
-        "@babel/plugin-transform-modules-commonjs": "^7.25.9",
-        "@babel/plugin-transform-modules-systemjs": "^7.25.9",
-        "@babel/plugin-transform-modules-umd": "^7.25.9",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9",
-        "@babel/plugin-transform-new-target": "^7.25.9",
-        "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9",
-        "@babel/plugin-transform-numeric-separator": "^7.25.9",
-        "@babel/plugin-transform-object-rest-spread": "^7.25.9",
-        "@babel/plugin-transform-object-super": "^7.25.9",
-        "@babel/plugin-transform-optional-catch-binding": "^7.25.9",
-        "@babel/plugin-transform-optional-chaining": "^7.25.9",
-        "@babel/plugin-transform-parameters": "^7.25.9",
-        "@babel/plugin-transform-private-methods": "^7.25.9",
-        "@babel/plugin-transform-private-property-in-object": "^7.25.9",
-        "@babel/plugin-transform-property-literals": "^7.25.9",
-        "@babel/plugin-transform-regenerator": "^7.25.9",
-        "@babel/plugin-transform-regexp-modifiers": "^7.26.0",
-        "@babel/plugin-transform-reserved-words": "^7.25.9",
-        "@babel/plugin-transform-shorthand-properties": "^7.25.9",
-        "@babel/plugin-transform-spread": "^7.25.9",
-        "@babel/plugin-transform-sticky-regex": "^7.25.9",
-        "@babel/plugin-transform-template-literals": "^7.25.9",
-        "@babel/plugin-transform-typeof-symbol": "^7.25.9",
-        "@babel/plugin-transform-unicode-escapes": "^7.25.9",
-        "@babel/plugin-transform-unicode-property-regex": "^7.25.9",
-        "@babel/plugin-transform-unicode-regex": "^7.25.9",
-        "@babel/plugin-transform-unicode-sets-regex": "^7.25.9",
+        "@babel/plugin-transform-arrow-functions": "^7.27.1",
+        "@babel/plugin-transform-async-generator-functions": "^7.28.0",
+        "@babel/plugin-transform-async-to-generator": "^7.27.1",
+        "@babel/plugin-transform-block-scoped-functions": "^7.27.1",
+        "@babel/plugin-transform-block-scoping": "^7.28.0",
+        "@babel/plugin-transform-class-properties": "^7.27.1",
+        "@babel/plugin-transform-class-static-block": "^7.28.3",
+        "@babel/plugin-transform-classes": "^7.28.3",
+        "@babel/plugin-transform-computed-properties": "^7.27.1",
+        "@babel/plugin-transform-destructuring": "^7.28.0",
+        "@babel/plugin-transform-dotall-regex": "^7.27.1",
+        "@babel/plugin-transform-duplicate-keys": "^7.27.1",
+        "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
+        "@babel/plugin-transform-dynamic-import": "^7.27.1",
+        "@babel/plugin-transform-explicit-resource-management": "^7.28.0",
+        "@babel/plugin-transform-exponentiation-operator": "^7.27.1",
+        "@babel/plugin-transform-export-namespace-from": "^7.27.1",
+        "@babel/plugin-transform-for-of": "^7.27.1",
+        "@babel/plugin-transform-function-name": "^7.27.1",
+        "@babel/plugin-transform-json-strings": "^7.27.1",
+        "@babel/plugin-transform-literals": "^7.27.1",
+        "@babel/plugin-transform-logical-assignment-operators": "^7.27.1",
+        "@babel/plugin-transform-member-expression-literals": "^7.27.1",
+        "@babel/plugin-transform-modules-amd": "^7.27.1",
+        "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+        "@babel/plugin-transform-modules-systemjs": "^7.27.1",
+        "@babel/plugin-transform-modules-umd": "^7.27.1",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1",
+        "@babel/plugin-transform-new-target": "^7.27.1",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
+        "@babel/plugin-transform-numeric-separator": "^7.27.1",
+        "@babel/plugin-transform-object-rest-spread": "^7.28.0",
+        "@babel/plugin-transform-object-super": "^7.27.1",
+        "@babel/plugin-transform-optional-catch-binding": "^7.27.1",
+        "@babel/plugin-transform-optional-chaining": "^7.27.1",
+        "@babel/plugin-transform-parameters": "^7.27.7",
+        "@babel/plugin-transform-private-methods": "^7.27.1",
+        "@babel/plugin-transform-private-property-in-object": "^7.27.1",
+        "@babel/plugin-transform-property-literals": "^7.27.1",
+        "@babel/plugin-transform-regenerator": "^7.28.3",
+        "@babel/plugin-transform-regexp-modifiers": "^7.27.1",
+        "@babel/plugin-transform-reserved-words": "^7.27.1",
+        "@babel/plugin-transform-shorthand-properties": "^7.27.1",
+        "@babel/plugin-transform-spread": "^7.27.1",
+        "@babel/plugin-transform-sticky-regex": "^7.27.1",
+        "@babel/plugin-transform-template-literals": "^7.27.1",
+        "@babel/plugin-transform-typeof-symbol": "^7.27.1",
+        "@babel/plugin-transform-unicode-escapes": "^7.27.1",
+        "@babel/plugin-transform-unicode-property-regex": "^7.27.1",
+        "@babel/plugin-transform-unicode-regex": "^7.27.1",
+        "@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
         "@babel/preset-modules": "0.1.6-no-external-plugins",
-        "babel-plugin-polyfill-corejs2": "^0.4.10",
-        "babel-plugin-polyfill-corejs3": "^0.10.6",
-        "babel-plugin-polyfill-regenerator": "^0.6.1",
-        "core-js-compat": "^3.38.1",
+        "babel-plugin-polyfill-corejs2": "^0.4.14",
+        "babel-plugin-polyfill-corejs3": "^0.13.0",
+        "babel-plugin-polyfill-regenerator": "^0.6.5",
+        "core-js-compat": "^3.43.0",
         "semver": "^6.3.1"
       },
       "engines": {
@@ -2024,17 +1928,17 @@
       }
     },
     "node_modules/@babel/preset-react": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz",
-      "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.27.1.tgz",
+      "integrity": "sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
-        "@babel/plugin-transform-react-display-name": "^7.25.9",
-        "@babel/plugin-transform-react-jsx": "^7.25.9",
-        "@babel/plugin-transform-react-jsx-development": "^7.25.9",
-        "@babel/plugin-transform-react-pure-annotations": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-validator-option": "^7.27.1",
+        "@babel/plugin-transform-react-display-name": "^7.27.1",
+        "@babel/plugin-transform-react-jsx": "^7.27.1",
+        "@babel/plugin-transform-react-jsx-development": "^7.27.1",
+        "@babel/plugin-transform-react-pure-annotations": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -2044,16 +1948,16 @@
       }
     },
     "node_modules/@babel/preset-typescript": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz",
-      "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==",
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz",
+      "integrity": "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-plugin-utils": "^7.25.9",
-        "@babel/helper-validator-option": "^7.25.9",
-        "@babel/plugin-syntax-jsx": "^7.25.9",
-        "@babel/plugin-transform-modules-commonjs": "^7.25.9",
-        "@babel/plugin-transform-typescript": "^7.25.9"
+        "@babel/helper-plugin-utils": "^7.27.1",
+        "@babel/helper-validator-option": "^7.27.1",
+        "@babel/plugin-syntax-jsx": "^7.27.1",
+        "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+        "@babel/plugin-transform-typescript": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -2075,58 +1979,57 @@
       }
     },
     "node_modules/@babel/runtime-corejs3": {
-      "version": "7.26.10",
-      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz",
-      "integrity": "sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.4.tgz",
+      "integrity": "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==",
       "license": "MIT",
       "dependencies": {
-        "core-js-pure": "^3.30.2",
-        "regenerator-runtime": "^0.14.0"
+        "core-js-pure": "^3.43.0"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/template": {
-      "version": "7.26.9",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
-      "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
+      "version": "7.27.2",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+      "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^7.26.2",
-        "@babel/parser": "^7.26.9",
-        "@babel/types": "^7.26.9"
+        "@babel/code-frame": "^7.27.1",
+        "@babel/parser": "^7.27.2",
+        "@babel/types": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/traverse": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
-      "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
+      "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^7.25.9",
-        "@babel/generator": "^7.25.9",
-        "@babel/parser": "^7.25.9",
-        "@babel/template": "^7.25.9",
-        "@babel/types": "^7.25.9",
-        "debug": "^4.3.1",
-        "globals": "^11.1.0"
+        "@babel/code-frame": "^7.27.1",
+        "@babel/generator": "^7.28.3",
+        "@babel/helper-globals": "^7.28.0",
+        "@babel/parser": "^7.28.4",
+        "@babel/template": "^7.27.2",
+        "@babel/types": "^7.28.4",
+        "debug": "^4.3.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
     "node_modules/@babel/types": {
-      "version": "7.26.10",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
-      "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
+      "version": "7.28.4",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
+      "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-string-parser": "^7.25.9",
-        "@babel/helper-validator-identifier": "^7.25.9"
+        "@babel/helper-string-parser": "^7.27.1",
+        "@babel/helper-validator-identifier": "^7.27.1"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -2134,130 +2037,1285 @@
     },
     "node_modules/@colors/colors": {
       "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+      "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
       "license": "MIT",
       "optional": true,
       "engines": {
         "node": ">=0.1.90"
       }
     },
-    "node_modules/@discoveryjs/json-ext": {
-      "version": "0.5.7",
+    "node_modules/@csstools/cascade-layer-name-parser": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz",
+      "integrity": "sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
       "license": "MIT",
       "engines": {
-        "node": ">=10.0.0"
-      }
-    },
-    "node_modules/@docsearch/css": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.7.0.tgz",
-      "integrity": "sha512-1OorbTwi1eeDmr0v5t+ckSRlt1zM5GHjm92iIl3kUu7im3GHuP+csf6E0WBg8pdXQczTWP9J9+o9n+Vg6DH5cQ==",
-      "license": "MIT"
-    },
-    "node_modules/@docsearch/react": {
-      "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.7.0.tgz",
-      "integrity": "sha512-8e6tdDfkYoxafEEPuX5eE1h9cTkLvhe4KgoFkO5JCddXSQONnN1FHcDZRI4r8894eMpbYq6rdJF0dVYh8ikwNQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/autocomplete-core": "1.17.6",
-        "@algolia/autocomplete-preset-algolia": "1.17.6",
-        "@docsearch/css": "3.7.0",
-        "algoliasearch": "^5.12.0"
+        "node": ">=18"
       },
       "peerDependencies": {
-        "@types/react": ">= 16.8.0 < 19.0.0",
-        "react": ">= 16.8.0 < 19.0.0",
-        "react-dom": ">= 16.8.0 < 19.0.0",
-        "search-insights": ">= 1 < 3"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        },
-        "react": {
-          "optional": true
-        },
-        "react-dom": {
-          "optional": true
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      }
+    },
+    "node_modules/@csstools/color-helpers": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
+      "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
         },
-        "search-insights": {
-          "optional": true
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
         }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
       }
     },
-    "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.13.0.tgz",
-      "integrity": "sha512-pS3qyXiWTwKnrt/jE79fqkNqZp7kjsFNlJDcBGkSWid74DNc6DmArlkvPqyLxnoaYGjUGACT6g56n7E3mVV2TA==",
+    "node_modules/@csstools/css-calc": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+      "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
       "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
       "engines": {
-        "node": ">= 14.0.0"
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
       }
     },
-    "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.13.0.tgz",
-      "integrity": "sha512-RnCfOSN4OUJDuMNHFca2M8lY64Tmw0kQOZikge4TknTqHmlbKJb8IbJE7Rol79Z80W2Y+B1ydcjV7DPje4GMRA==",
+    "node_modules/@csstools/css-color-parser": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
+      "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
       "license": "MIT",
       "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+        "@csstools/color-helpers": "^5.1.0",
+        "@csstools/css-calc": "^2.1.4"
       },
       "engines": {
-        "node": ">= 14.0.0"
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
       }
     },
-    "node_modules/@docsearch/react/node_modules/@algolia/recommend": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.13.0.tgz",
-      "integrity": "sha512-53/wW96oaj1FKMzGdFcZ/epygfTppLDUvgI1thLkd475EtVZCH3ZZVUNCEvf1AtnNyH1RnItkFzX8ayWCpx2PQ==",
+    "node_modules/@csstools/css-parser-algorithms": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+      "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
       "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
-      },
       "engines": {
-        "node": ">= 14.0.0"
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@csstools/css-tokenizer": "^3.0.4"
       }
     },
-    "node_modules/@docsearch/react/node_modules/algoliasearch": {
-      "version": "5.13.0",
-      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.13.0.tgz",
-      "integrity": "sha512-04lyQX3Ev/oLYQx+aagamQDXvkUUfX1mwrLrus15+9fNaYj28GDxxEzbwaRfvmHFcZyoxvup7mMtDTTw8SrTEQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-abtesting": "5.13.0",
-        "@algolia/client-analytics": "5.13.0",
-        "@algolia/client-common": "5.13.0",
-        "@algolia/client-insights": "5.13.0",
-        "@algolia/client-personalization": "5.13.0",
-        "@algolia/client-query-suggestions": "5.13.0",
-        "@algolia/client-search": "5.13.0",
-        "@algolia/ingestion": "1.13.0",
-        "@algolia/monitoring": "1.13.0",
-        "@algolia/recommend": "5.13.0",
-        "@algolia/requester-browser-xhr": "5.13.0",
-        "@algolia/requester-fetch": "5.13.0",
-        "@algolia/requester-node-http": "5.13.0"
+    "node_modules/@csstools/css-tokenizer": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+      "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@csstools/media-query-list-parser": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz",
+      "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      }
+    },
+    "node_modules/@csstools/postcss-alpha-function": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-alpha-function/-/postcss-alpha-function-1.0.1.tgz",
+      "integrity": "sha512-isfLLwksH3yHkFXfCI2Gcaqg7wGGHZZwunoJzEZk0yKYIokgre6hYVFibKL3SYAoR1kBXova8LB+JoO5vZzi9w==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-cascade-layers": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz",
+      "integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/selector-specificity": "^5.0.0",
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-cascade-layers/node_modules/@csstools/selector-specificity": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+      "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      }
+    },
+    "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@csstools/postcss-color-function": {
+      "version": "4.0.12",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.12.tgz",
+      "integrity": "sha512-yx3cljQKRaSBc2hfh8rMZFZzChaFgwmO2JfFgFr1vMcF3C/uyy5I4RFIBOIWGq1D+XbKCG789CGkG6zzkLpagA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-color-function-display-p3-linear": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function-display-p3-linear/-/postcss-color-function-display-p3-linear-1.0.1.tgz",
+      "integrity": "sha512-E5qusdzhlmO1TztYzDIi8XPdPoYOjoTY6HBYBCYSj+Gn4gQRBlvjgPQXzfzuPQqt8EhkC/SzPKObg4Mbn8/xMg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-color-mix-function": {
+      "version": "3.0.12",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.12.tgz",
+      "integrity": "sha512-4STERZfCP5Jcs13P1U5pTvI9SkgLgfMUMhdXW8IlJWkzOOOqhZIjcNhWtNJZes2nkBDsIKJ0CJtFtuaZ00moag==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-color-mix-variadic-function-arguments": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.2.tgz",
+      "integrity": "sha512-rM67Gp9lRAkTo+X31DUqMEq+iK+EFqsidfecmhrteErxJZb6tUoJBVQca1Vn1GpDql1s1rD1pKcuYzMsg7Z1KQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-content-alt-text": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.8.tgz",
+      "integrity": "sha512-9SfEW9QCxEpTlNMnpSqFaHyzsiRpZ5J5+KqCu1u5/eEJAWsMhzT40qf0FIbeeglEvrGRMdDzAxMIz3wqoGSb+Q==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-contrast-color-function": {
+      "version": "2.0.12",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-contrast-color-function/-/postcss-contrast-color-function-2.0.12.tgz",
+      "integrity": "sha512-YbwWckjK3qwKjeYz/CijgcS7WDUCtKTd8ShLztm3/i5dhh4NaqzsbYnhm4bjrpFpnLZ31jVcbK8YL77z3GBPzA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-exponential-functions": {
+      "version": "2.0.9",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz",
+      "integrity": "sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-calc": "^2.1.4",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-font-format-keywords": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz",
+      "integrity": "sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-gamut-mapping": {
+      "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.11.tgz",
+      "integrity": "sha512-fCpCUgZNE2piVJKC76zFsgVW1apF6dpYsqGyH8SIeCcM4pTEsRTWTLCaJIMKFEundsCKwY1rwfhtrio04RJ4Dw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-gradients-interpolation-method": {
+      "version": "5.0.12",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.12.tgz",
+      "integrity": "sha512-jugzjwkUY0wtNrZlFeyXzimUL3hN4xMvoPnIXxoZqxDvjZRiSh+itgHcVUWzJ2VwD/VAMEgCLvtaJHX+4Vj3Ow==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-hwb-function": {
+      "version": "4.0.12",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.12.tgz",
+      "integrity": "sha512-mL/+88Z53KrE4JdePYFJAQWFrcADEqsLprExCM04GDNgHIztwFzj0Mbhd/yxMBngq0NIlz58VVxjt5abNs1VhA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-ic-unit": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.4.tgz",
+      "integrity": "sha512-yQ4VmossuOAql65sCPppVO1yfb7hDscf4GseF0VCA/DTDaBc0Wtf8MTqVPfjGYlT5+2buokG0Gp7y0atYZpwjg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-initial": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz",
+      "integrity": "sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-is-pseudo-class": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz",
+      "integrity": "sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/selector-specificity": "^5.0.0",
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-is-pseudo-class/node_modules/@csstools/selector-specificity": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+      "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      }
+    },
+    "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@csstools/postcss-light-dark-function": {
+      "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.11.tgz",
+      "integrity": "sha512-fNJcKXJdPM3Lyrbmgw2OBbaioU7yuKZtiXClf4sGdQttitijYlZMD5K7HrC/eF83VRWRrYq6OZ0Lx92leV2LFA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-logical-float-and-clear": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz",
+      "integrity": "sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-logical-overflow": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz",
+      "integrity": "sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-logical-overscroll-behavior": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz",
+      "integrity": "sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-logical-resize": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz",
+      "integrity": "sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-logical-viewport-units": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz",
+      "integrity": "sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-media-minmax": {
+      "version": "2.0.9",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz",
+      "integrity": "sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "@csstools/css-calc": "^2.1.4",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/media-query-list-parser": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz",
+      "integrity": "sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/media-query-list-parser": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-nested-calc": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz",
+      "integrity": "sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-normalize-display-values": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz",
+      "integrity": "sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-oklab-function": {
+      "version": "4.0.12",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.12.tgz",
+      "integrity": "sha512-HhlSmnE1NKBhXsTnNGjxvhryKtO7tJd1w42DKOGFD6jSHtYOrsJTQDKPMwvOfrzUAk8t7GcpIfRyM7ssqHpFjg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-progressive-custom-properties": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz",
+      "integrity": "sha512-uPiiXf7IEKtUQXsxu6uWtOlRMXd2QWWy5fhxHDnPdXKCQckPP3E34ZgDoZ62r2iT+UOgWsSbM4NvHE5m3mAEdw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-random-function": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz",
+      "integrity": "sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-calc": "^2.1.4",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-relative-color-syntax": {
+      "version": "3.0.12",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.12.tgz",
+      "integrity": "sha512-0RLIeONxu/mtxRtf3o41Lq2ghLimw0w9ByLWnnEVuy89exmEEq8bynveBxNW3nyHqLAFEeNtVEmC1QK9MZ8Huw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-scope-pseudo-class": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz",
+      "integrity": "sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/@csstools/postcss-sign-functions": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz",
+      "integrity": "sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-calc": "^2.1.4",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-stepped-value-functions": {
+      "version": "4.0.9",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz",
+      "integrity": "sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-calc": "^2.1.4",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-text-decoration-shorthand": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz",
+      "integrity": "sha512-KSkGgZfx0kQjRIYnpsD7X2Om9BUXX/Kii77VBifQW9Ih929hK0KNjVngHDH0bFB9GmfWcR9vJYJJRvw/NQjkrA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/color-helpers": "^5.1.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-trigonometric-functions": {
+      "version": "4.0.9",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz",
+      "integrity": "sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-calc": "^2.1.4",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/postcss-unset-value": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz",
+      "integrity": "sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@csstools/utilities": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-2.0.0.tgz",
+      "integrity": "sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/@discoveryjs/json-ext": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+      "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/@docsearch/css": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.2.0.tgz",
+      "integrity": "sha512-65KU9Fw5fGsPPPlgIghonMcndyx1bszzrDQYLfierN+Ha29yotMHzVS94bPkZS6On9LS8dE4qmW4P/fGjtCf/g==",
+      "license": "MIT"
+    },
+    "node_modules/@docsearch/react": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.2.0.tgz",
+      "integrity": "sha512-zSN/KblmtBcerf7Z87yuKIHZQmxuXvYc6/m0+qnjyNu+Ir67AVOagTa1zBqcxkVUVkmBqUExdcyrdo9hbGbqTw==",
+      "license": "MIT",
+      "dependencies": {
+        "@ai-sdk/react": "^2.0.30",
+        "@algolia/autocomplete-core": "1.19.2",
+        "@docsearch/css": "4.2.0",
+        "ai": "^5.0.30",
+        "algoliasearch": "^5.28.0",
+        "marked": "^16.3.0",
+        "zod": "^4.1.8"
       },
-      "engines": {
-        "node": ">= 14.0.0"
+      "peerDependencies": {
+        "@types/react": ">= 16.8.0 < 20.0.0",
+        "react": ">= 16.8.0 < 20.0.0",
+        "react-dom": ">= 16.8.0 < 20.0.0",
+        "search-insights": ">= 1 < 3"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        },
+        "search-insights": {
+          "optional": true
+        }
       }
     },
     "node_modules/@docusaurus/babel": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.6.1.tgz",
-      "integrity": "sha512-JcKaunW8Ml2nTnfnvFc55T00Y+aCpNWnf1KY/gG+wWxHYDH0IdXOOz+k6NAlEAerW8+VYLfUqRIqHZ7N/DVXvQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.9.1.tgz",
+      "integrity": "sha512-/uoi3oG+wvbVWNBRfPrzrEslOSeLxrQEyWMywK51TLDFTANqIRivzkMusudh5bdDty8fXzCYUT+tg5t697jYqg==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.25.9",
@@ -2270,42 +3328,41 @@
         "@babel/runtime": "^7.25.9",
         "@babel/runtime-corejs3": "^7.25.9",
         "@babel/traverse": "^7.25.9",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
         "babel-plugin-dynamic-import-node": "^2.3.3",
         "fs-extra": "^11.1.1",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       }
     },
     "node_modules/@docusaurus/bundler": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.6.1.tgz",
-      "integrity": "sha512-vHSEx8Ku9x/gfIC6k4xb8J2nTxagLia0KvZkPZhxfkD1+n8i+Dj4BZPWTmv+kCA17RbgAvECG0XRZ0/ZEspQBQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.9.1.tgz",
+      "integrity": "sha512-E1c9DgNmAz4NqbNtiJVp4UgjLtr8O01IgtXD/NDQ4PZaK8895cMiTOgb3k7mN0qX8A3lb8vqyrPJ842+yMpuUg==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.25.9",
-        "@docusaurus/babel": "3.6.1",
-        "@docusaurus/cssnano-preset": "3.6.1",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "autoprefixer": "^10.4.14",
+        "@docusaurus/babel": "3.9.1",
+        "@docusaurus/cssnano-preset": "3.9.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
         "babel-loader": "^9.2.1",
-        "clean-css": "^5.3.2",
+        "clean-css": "^5.3.3",
         "copy-webpack-plugin": "^11.0.0",
-        "css-loader": "^6.8.1",
+        "css-loader": "^6.11.0",
         "css-minimizer-webpack-plugin": "^5.0.1",
         "cssnano": "^6.1.2",
         "file-loader": "^6.2.0",
         "html-minifier-terser": "^7.2.0",
-        "mini-css-extract-plugin": "^2.9.1",
+        "mini-css-extract-plugin": "^2.9.2",
         "null-loader": "^4.0.1",
-        "postcss": "^8.4.26",
-        "postcss-loader": "^7.3.3",
-        "react-dev-utils": "^12.0.1",
+        "postcss": "^8.5.4",
+        "postcss-loader": "^7.3.4",
+        "postcss-preset-env": "^10.2.1",
         "terser-webpack-plugin": "^5.3.9",
         "tslib": "^2.6.0",
         "url-loader": "^4.1.1",
@@ -2313,7 +3370,7 @@
         "webpackbar": "^6.0.1"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
         "@docusaurus/faster": "*"
@@ -2325,18 +3382,18 @@
       }
     },
     "node_modules/@docusaurus/core": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.6.1.tgz",
-      "integrity": "sha512-cDKxPihiM2z7G+4QtpTczS7uxNfNG6naSqM65OmAJET0CFRHbc9mDlLFtQF0lsVES91SHqfcGaaLZmi2FjdwWA==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/babel": "3.6.1",
-        "@docusaurus/bundler": "3.6.1",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/mdx-loader": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.1.tgz",
+      "integrity": "sha512-FWDk1LIGD5UR5Zmm9rCrXRoxZUgbwuP6FBA7rc50DVfzqDOMkeMe3NyJhOsA2dF0zBE3VbHEIMmTjKwTZJwbaA==",
+      "license": "MIT",
+      "dependencies": {
+        "@docusaurus/babel": "3.9.1",
+        "@docusaurus/bundler": "3.9.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/mdx-loader": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "boxen": "^6.2.1",
         "chalk": "^4.1.2",
         "chokidar": "^3.5.3",
@@ -2344,92 +3401,91 @@
         "combine-promises": "^1.1.0",
         "commander": "^5.1.0",
         "core-js": "^3.31.1",
-        "del": "^6.1.1",
         "detect-port": "^1.5.1",
         "escape-html": "^1.0.3",
         "eta": "^2.2.0",
         "eval": "^0.1.8",
+        "execa": "5.1.1",
         "fs-extra": "^11.1.1",
         "html-tags": "^3.3.1",
         "html-webpack-plugin": "^5.6.0",
         "leven": "^3.1.0",
         "lodash": "^4.17.21",
+        "open": "^8.4.0",
         "p-map": "^4.0.0",
         "prompts": "^2.4.2",
-        "react-dev-utils": "^12.0.1",
-        "react-helmet-async": "^1.3.0",
+        "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
         "react-loadable": "npm:@docusaurus/react-loadable@6.0.0",
         "react-loadable-ssr-addon-v5-slorber": "^1.0.1",
         "react-router": "^5.3.4",
         "react-router-config": "^5.1.1",
         "react-router-dom": "^5.3.4",
-        "rtl-detect": "^1.0.4",
         "semver": "^7.5.4",
         "serve-handler": "^6.1.6",
-        "shelljs": "^0.8.5",
+        "tinypool": "^1.0.2",
         "tslib": "^2.6.0",
         "update-notifier": "^6.0.2",
         "webpack": "^5.95.0",
         "webpack-bundle-analyzer": "^4.10.2",
-        "webpack-dev-server": "^4.15.2",
+        "webpack-dev-server": "^5.2.2",
         "webpack-merge": "^6.0.1"
       },
       "bin": {
         "docusaurus": "bin/docusaurus.mjs"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
         "@mdx-js/react": "^3.0.0",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/cssnano-preset": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.1.tgz",
-      "integrity": "sha512-ZxYUmNeyQHW2w4/PJ7d07jQDuxzmKr9uPAQ6IVe5dTkeIeV0mDBB3jOLeJkNoI42Ru9JKEqQ9aVDtM9ct6QHnw==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.9.1.tgz",
+      "integrity": "sha512-2y7+s7RWQMqBg+9ejeKwvZs7Bdw/hHIVJIodwMXbs2kr+S48AhcmAfdOh6Cwm0unJb0hJUshN0ROwRoQMwl3xg==",
       "license": "MIT",
       "dependencies": {
         "cssnano-preset-advanced": "^6.1.2",
-        "postcss": "^8.4.38",
+        "postcss": "^8.5.4",
         "postcss-sort-media-queries": "^5.2.0",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       }
     },
     "node_modules/@docusaurus/logger": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.6.1.tgz",
-      "integrity": "sha512-OvetI/nnOMBSqCkUzKAQhnIjhxduECK4qTu3tq/8/h/qqvLsvKURojm04WPE54L+Uy+UXMas0hnbBJd8zDlEOw==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.9.1.tgz",
+      "integrity": "sha512-C9iFzXwHzwvGlisE4bZx+XQE0JIqlGAYAd5LzpR7fEDgjctu7yL8bE5U4nTNywXKHURDzMt4RJK8V6+stFHVkA==",
       "license": "MIT",
       "dependencies": {
         "chalk": "^4.1.2",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       }
     },
     "node_modules/@docusaurus/mdx-loader": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.6.1.tgz",
-      "integrity": "sha512-KPIsYi0S3X3/rNrW3V1fgOu5t6ahYWc31zTHHod8pacFxdmk9Uf6uuw+Jd6Cly1ilgal+41Ku+s0gmMuqKqiqg==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.9.1.tgz",
+      "integrity": "sha512-/1PY8lqry8jCt0qZddJSpc0U2sH6XC27kVJZfpA7o2TiQ3mdBQyH5AVbj/B2m682B1ounE+XjI0LdpOkAQLPoA==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "@mdx-js/mdx": "^3.0.0",
         "@slorber/remark-comment": "^1.0.0",
         "escape-html": "^1.0.3",
         "estree-util-value-to-estree": "^3.0.1",
         "file-loader": "^6.2.0",
         "fs-extra": "^11.1.1",
-        "image-size": "^1.0.2",
+        "image-size": "^2.0.2",
         "mdast-util-mdx": "^3.0.0",
         "mdast-util-to-string": "^4.0.0",
         "rehype-raw": "^7.0.0",
@@ -2446,25 +3502,25 @@
         "webpack": "^5.88.1"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/module-type-aliases": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.1.tgz",
-      "integrity": "sha512-J+q1jgm7TnEfVIUZImSFeLA1rghb6nwtoB9siHdcgKpDqFJ9/S7xhQL2aEKE7iZMZYzpu+2F390E9A7GkdEJNA==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.9.1.tgz",
+      "integrity": "sha512-YBce3GbJGGcMbJTyHcnEOMvdXqg41pa5HsrMCGA5Rm4z0h0tHS6YtEldj0mlfQRhCG7Y0VD66t2tb87Aom+11g==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/types": "3.6.1",
+        "@docusaurus/types": "3.9.1",
         "@types/history": "^4.7.11",
         "@types/react": "*",
         "@types/react-router-config": "*",
         "@types/react-router-dom": "*",
-        "react-helmet-async": "*",
+        "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
         "react-loadable": "npm:@docusaurus/react-loadable@6.0.0"
       },
       "peerDependencies": {
@@ -2473,24 +3529,24 @@
       }
     },
     "node_modules/@docusaurus/plugin-content-blog": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.1.tgz",
-      "integrity": "sha512-FUmsn3xg/XD/K/4FQd8XHrs92aQdZO5LUtpHnRvO1/6DY87SMz6B6ERAN9IGQQld//M2/LVTHkZy8oVhQZQHIQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/mdx-loader": "3.6.1",
-        "@docusaurus/theme-common": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.1.tgz",
+      "integrity": "sha512-vT6kIimpJLWvW9iuWzH4u7VpTdsGlmn4yfyhq0/Kb1h4kf9uVouGsTmrD7WgtYBUG1P+TSmQzUUQa+ALBSRTig==",
+      "license": "MIT",
+      "dependencies": {
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/mdx-loader": "3.9.1",
+        "@docusaurus/theme-common": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "cheerio": "1.0.0-rc.12",
         "feed": "^4.2.2",
         "fs-extra": "^11.1.1",
         "lodash": "^4.17.21",
-        "reading-time": "^1.5.0",
+        "schema-dts": "^1.1.2",
         "srcset": "^4.0.0",
         "tslib": "^2.6.0",
         "unist-util-visit": "^5.0.0",
@@ -2498,226 +3554,267 @@
         "webpack": "^5.88.1"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
         "@docusaurus/plugin-content-docs": "*",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/plugin-content-docs": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.1.tgz",
-      "integrity": "sha512-Uq8kyn5DYCDmkUlB9sWChhWghS4lUFNiQU+RXcAXJ3qCVXsBpPsh6RF+npQG1N+j4wAbjydM1iLLJJzp+x3eMQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/mdx-loader": "3.6.1",
-        "@docusaurus/module-type-aliases": "3.6.1",
-        "@docusaurus/theme-common": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.1.tgz",
+      "integrity": "sha512-DyLk9BIA6I9gPIuia8XIL+XIEbNnExam6AHzRsfrEq4zJr7k/DsWW7oi4aJMepDnL7jMRhpVcdsCxdjb0/A9xg==",
+      "license": "MIT",
+      "dependencies": {
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/mdx-loader": "3.9.1",
+        "@docusaurus/module-type-aliases": "3.9.1",
+        "@docusaurus/theme-common": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "@types/react-router-config": "^5.0.7",
         "combine-promises": "^1.1.0",
         "fs-extra": "^11.1.1",
         "js-yaml": "^4.1.0",
         "lodash": "^4.17.21",
+        "schema-dts": "^1.1.2",
         "tslib": "^2.6.0",
         "utility-types": "^3.10.0",
         "webpack": "^5.88.1"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/plugin-content-pages": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.1.tgz",
-      "integrity": "sha512-TZtL+2zq20gqGalzoIT2rEF1T4YCZ26jTvlCJXs78+incIajfdHtmdOq7rQW0oV7oqTjpGllbp788nY/vY9jgw==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.9.1.tgz",
+      "integrity": "sha512-/1wFzRnXYASI+Nv9ck9IVPIMw0O5BGQ8ZVhDzEwhkL+tl44ycvSnY6PIe6rW2HLxsw61Z3WFwAiU8+xMMtMZpg==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/mdx-loader": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/mdx-loader": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "fs-extra": "^11.1.1",
         "tslib": "^2.6.0",
         "webpack": "^5.88.1"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
+      }
+    },
+    "node_modules/@docusaurus/plugin-css-cascade-layers": {
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.9.1.tgz",
+      "integrity": "sha512-/QyW2gRCk/XE3ttCK/ERIgle8KJ024dBNKMu6U5SmpJvuT2il1n5jR/48Pp/9wEwut8WVml4imNm6X8JsL5A0Q==",
+      "license": "MIT",
+      "dependencies": {
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
+        "tslib": "^2.6.0"
+      },
+      "engines": {
+        "node": ">=20.0"
       }
     },
     "node_modules/@docusaurus/plugin-debug": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.6.1.tgz",
-      "integrity": "sha512-DeKPZtoVExDSYCbzoz7y5Dhc6+YPqRWfVGwEEUyKopSyQYefp0OV8hvASmbJCn2WyThRgspOUhog3FSEhz+agw==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.9.1.tgz",
+      "integrity": "sha512-qPeAuk0LccC251d7jg2MRhNI+o7niyqa924oEM/AxnZJvIpMa596aAxkRImiAqNN6+gtLE1Hkrz/RHUH2HDGsA==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
         "fs-extra": "^11.1.1",
-        "react-json-view-lite": "^1.2.0",
+        "react-json-view-lite": "^2.3.0",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/plugin-google-analytics": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.1.tgz",
-      "integrity": "sha512-ZEoERiDHxSfhaEeT35ukQ892NzGHWiUvfxUsnPiRuGEhMoQlxMSp60shBuSZ1sUKuZlndoEl5qAXJg09Wls/Sg==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.9.1.tgz",
+      "integrity": "sha512-k4Qq2HphqOrIU/CevGPdEO1yJnWUI8m0zOJsYt5NfMJwNsIn/gDD6gv/DKD+hxHndQT5pacsfBd4BWHZVNVroQ==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/plugin-google-gtag": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.1.tgz",
-      "integrity": "sha512-u/E9vXUsZxYaV6Brvfee8NiH/iR0cMml9P/ifz4EpH/Jfxdbw8rbCT0Nm/h7EFgEY48Uqkl5huSbIvFB9n8aTQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.9.1.tgz",
+      "integrity": "sha512-n9BURBiQyJKI/Ecz35IUjXYwXcgNCSq7/eA07+ZYcDiSyH2p/EjPf8q/QcZG3CyEJPZ/SzGkDHePfcVPahY4Gg==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "@types/gtag.js": "^0.0.12",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/plugin-google-tag-manager": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.1.tgz",
-      "integrity": "sha512-By+NKkGYV8tSo8/RyS1OXikOtqsko5jJZ/uioJfBjsBGgSbiMJ+Y/HogFBke0mgSvf7NPGKZTbYm5+FJ8YUtPQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.9.1.tgz",
+      "integrity": "sha512-rZAQZ25ZuXaThBajxzLjXieTDUCMmBzfAA6ThElQ3o7Q+LEpOjCIrwGFau0KLY9HeG6x91+FwwsAM8zeApYDrg==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/plugin-sitemap": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.1.tgz",
-      "integrity": "sha512-i8R/GTKew4Cufb+7YQTwfPcNOhKTJzZ1VZ5OqQwI9c3pZK2TltQyhqKDVN94KCTbSSKvOYYytYfRAB2uPnH1/A==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.9.1.tgz",
+      "integrity": "sha512-k/bf5cXDxAJUYTzqatgFJwmZsLUbIgl6S8AdZMKGG2Mv2wcOHt+EQNN9qPyWZ5/9cFj+Q8f8DN+KQheBMYLong==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "fs-extra": "^11.1.1",
         "sitemap": "^7.1.1",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
-    "node_modules/@docusaurus/preset-classic": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.6.1.tgz",
-      "integrity": "sha512-b90Y1XRH9e+oa/E3NmiFEFOwgYUd+knFcZUy81nM3FJs038WbEA0T55NQsuPW0s7nOsCShQ7dVFyKxV+Wp31Nw==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/plugin-content-blog": "3.6.1",
-        "@docusaurus/plugin-content-docs": "3.6.1",
-        "@docusaurus/plugin-content-pages": "3.6.1",
-        "@docusaurus/plugin-debug": "3.6.1",
-        "@docusaurus/plugin-google-analytics": "3.6.1",
-        "@docusaurus/plugin-google-gtag": "3.6.1",
-        "@docusaurus/plugin-google-tag-manager": "3.6.1",
-        "@docusaurus/plugin-sitemap": "3.6.1",
-        "@docusaurus/theme-classic": "3.6.1",
-        "@docusaurus/theme-common": "3.6.1",
-        "@docusaurus/theme-search-algolia": "3.6.1",
-        "@docusaurus/types": "3.6.1"
+    "node_modules/@docusaurus/plugin-svgr": {
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/plugin-svgr/-/plugin-svgr-3.9.1.tgz",
+      "integrity": "sha512-TeZOXT2PSdTNR1OpDJMkYqFyX7MMhbd4t16hQByXksgZQCXNyw3Dio+KaDJ2Nj+LA4WkOvsk45bWgYG5MAaXSQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
+        "@svgr/core": "8.1.0",
+        "@svgr/webpack": "^8.1.0",
+        "tslib": "^2.6.0",
+        "webpack": "^5.88.1"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
+      }
+    },
+    "node_modules/@docusaurus/preset-classic": {
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.9.1.tgz",
+      "integrity": "sha512-ZHga2xsxxsyd0dN1BpLj8S889Eu9eMBuj2suqxdw/vaaXu/FjJ8KEGbcaeo6nHPo8VQcBBnPEdkBtSDm2TfMNw==",
+      "license": "MIT",
+      "dependencies": {
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/plugin-content-blog": "3.9.1",
+        "@docusaurus/plugin-content-docs": "3.9.1",
+        "@docusaurus/plugin-content-pages": "3.9.1",
+        "@docusaurus/plugin-css-cascade-layers": "3.9.1",
+        "@docusaurus/plugin-debug": "3.9.1",
+        "@docusaurus/plugin-google-analytics": "3.9.1",
+        "@docusaurus/plugin-google-gtag": "3.9.1",
+        "@docusaurus/plugin-google-tag-manager": "3.9.1",
+        "@docusaurus/plugin-sitemap": "3.9.1",
+        "@docusaurus/plugin-svgr": "3.9.1",
+        "@docusaurus/theme-classic": "3.9.1",
+        "@docusaurus/theme-common": "3.9.1",
+        "@docusaurus/theme-search-algolia": "3.9.1",
+        "@docusaurus/types": "3.9.1"
+      },
+      "engines": {
+        "node": ">=20.0"
+      },
+      "peerDependencies": {
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/theme-classic": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.6.1.tgz",
-      "integrity": "sha512-5lVUmIXk7zp+n9Ki2lYWrmhbd6mssOlKCnnDJvY4QDi3EgjRisIu5g4yKXoWTIbiqE7m7q/dS9cbeShEtfkKng==",
-      "license": "MIT",
-      "dependencies": {
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/mdx-loader": "3.6.1",
-        "@docusaurus/module-type-aliases": "3.6.1",
-        "@docusaurus/plugin-content-blog": "3.6.1",
-        "@docusaurus/plugin-content-docs": "3.6.1",
-        "@docusaurus/plugin-content-pages": "3.6.1",
-        "@docusaurus/theme-common": "3.6.1",
-        "@docusaurus/theme-translations": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.9.1.tgz",
+      "integrity": "sha512-LrAIu/mQ04nG6s1cssC0TMmICD8twFIIn/hJ5Pd9uIPQvtKnyAKEn12RefopAul5KfMo9kixPaqogV5jIJr26w==",
+      "license": "MIT",
+      "dependencies": {
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/mdx-loader": "3.9.1",
+        "@docusaurus/module-type-aliases": "3.9.1",
+        "@docusaurus/plugin-content-blog": "3.9.1",
+        "@docusaurus/plugin-content-docs": "3.9.1",
+        "@docusaurus/plugin-content-pages": "3.9.1",
+        "@docusaurus/theme-common": "3.9.1",
+        "@docusaurus/theme-translations": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
         "@mdx-js/react": "^3.0.0",
         "clsx": "^2.0.0",
-        "copy-text-to-clipboard": "^3.2.0",
         "infima": "0.2.0-alpha.45",
         "lodash": "^4.17.21",
         "nprogress": "^0.2.0",
-        "postcss": "^8.4.26",
+        "postcss": "^8.5.4",
         "prism-react-renderer": "^2.3.0",
         "prismjs": "^1.29.0",
         "react-router-dom": "^5.3.4",
@@ -2726,23 +3823,23 @@
         "utility-types": "^3.10.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/theme-common": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.6.1.tgz",
-      "integrity": "sha512-18iEYNpMvarGfq9gVRpGowSZD24vZ39Iz4acqaj64180i54V9el8tVnhNr/wRvrUm1FY30A1NHLqnMnDz4rYEQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.9.1.tgz",
+      "integrity": "sha512-j9adi961F+6Ps9d0jcb5BokMcbjXAAJqKkV43eo8nh4YgmDj7KUNDX4EnOh/MjTQeO06oPY5cxp3yUXdW/8Ggw==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/mdx-loader": "3.6.1",
-        "@docusaurus/module-type-aliases": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
+        "@docusaurus/mdx-loader": "3.9.1",
+        "@docusaurus/module-type-aliases": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
         "@types/history": "^4.7.11",
         "@types/react": "*",
         "@types/react-router-config": "*",
@@ -2753,30 +3850,30 @@
         "utility-types": "^3.10.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
         "@docusaurus/plugin-content-docs": "*",
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/theme-search-algolia": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.1.tgz",
-      "integrity": "sha512-BjmuiFRpQP1WEm8Mzu1Bb0Wdas6G65VHXDDNr7XTKgbstxalE6vuxt0ioXTDFS2YVep5748aVhKvnxR9gm2Liw==",
-      "license": "MIT",
-      "dependencies": {
-        "@docsearch/react": "^3.5.2",
-        "@docusaurus/core": "3.6.1",
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/plugin-content-docs": "3.6.1",
-        "@docusaurus/theme-common": "3.6.1",
-        "@docusaurus/theme-translations": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-validation": "3.6.1",
-        "algoliasearch": "^4.18.0",
-        "algoliasearch-helper": "^3.13.3",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.9.1.tgz",
+      "integrity": "sha512-WjM28bzlgfT6nHlEJemkwyGVpvGsZWPireV/w+wZ1Uo64xCZ8lNOb4xwQRukDaLSed3oPBN0gSnu06l5VuCXHg==",
+      "license": "MIT",
+      "dependencies": {
+        "@docsearch/react": "^3.9.0 || ^4.1.0",
+        "@docusaurus/core": "3.9.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/plugin-content-docs": "3.9.1",
+        "@docusaurus/theme-common": "3.9.1",
+        "@docusaurus/theme-translations": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-validation": "3.9.1",
+        "algoliasearch": "^5.37.0",
+        "algoliasearch-helper": "^3.26.0",
         "clsx": "^2.0.0",
         "eta": "^2.2.0",
         "fs-extra": "^11.1.1",
@@ -2785,52 +3882,53 @@
         "utility-types": "^3.10.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/theme-translations": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.6.1.tgz",
-      "integrity": "sha512-bNm5G6sueUezvyhsBegA1wwM38yW0BnqpZTE9KHO2yKnkERNMaV5x/yPJ/DNCOHjJtCcJ5Uz55g2AS75Go31xA==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.9.1.tgz",
+      "integrity": "sha512-mUQd49BSGKTiM6vP9+JFgRJL28lMIN3PUvXjF3rzuOHMByUZUBNwCt26Z23GkKiSIOrRkjKoaBNTipR/MHdYSQ==",
       "license": "MIT",
       "dependencies": {
         "fs-extra": "^11.1.1",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       }
     },
     "node_modules/@docusaurus/tsconfig": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.6.1.tgz",
-      "integrity": "sha512-RvjMG9M9YK8N/I5oudqJed8jjfWGI7csr4XCkGXBToNkkoi2QgkTz2DxH+obKdfLejQaASdIMynYaE5Lv7Qw9Q==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.9.1.tgz",
+      "integrity": "sha512-stdzM1dNDgRO0OvxeznXlE3N1igUoeHPNJjiKqyffLizgpVgNXJBAWeG6fuoYiCH4udGUBqy2dyM+1+kG2/UPQ==",
       "dev": true,
       "license": "MIT"
     },
     "node_modules/@docusaurus/types": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.6.1.tgz",
-      "integrity": "sha512-hCB1hj9DYutVYBisnPNobz9SzEmCcf1EetJv09O49Cov3BqOkm+vnnjB3d957YJMtpLGQoKBeN/FF1DZ830JwQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.9.1.tgz",
+      "integrity": "sha512-ElekJ29sk39s5LTEZMByY1c2oH9FMtw7KbWFU3BtuQ1TytfIK39HhUivDEJvm5KCLyEnnfUZlvSNDXeyk0vzAA==",
       "license": "MIT",
       "dependencies": {
         "@mdx-js/mdx": "^3.0.0",
         "@types/history": "^4.7.11",
+        "@types/mdast": "^4.0.2",
         "@types/react": "*",
         "commander": "^5.1.0",
         "joi": "^17.9.2",
-        "react-helmet-async": "^1.3.0",
+        "react-helmet-async": "npm:@slorber/react-helmet-async@1.3.0",
         "utility-types": "^3.10.0",
         "webpack": "^5.95.0",
         "webpack-merge": "^5.9.0"
       },
       "peerDependencies": {
-        "react": "^18.0.0",
-        "react-dom": "^18.0.0"
+        "react": "^18.0.0 || ^19.0.0",
+        "react-dom": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/@docusaurus/types/node_modules/webpack-merge": {
@@ -2848,16 +3946,16 @@
       }
     },
     "node_modules/@docusaurus/utils": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.6.1.tgz",
-      "integrity": "sha512-nS3WCvepwrnBEgSG5vQu40XG95lC9Jeh/odV5u5IhU1eQFEGDst9xBi6IK5yZdsGvbuaXBZLZtOqWYtuuFa/rQ==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.9.1.tgz",
+      "integrity": "sha512-YAL4yhhWLl9DXuf5MVig260a6INz4MehrBGFU/CZu8yXmRiYEuQvRFWh9ZsjfAOyaG7za1MNmBVZ4VVAi/CiJA==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/types": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
-        "@svgr/webpack": "^8.1.0",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/types": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
         "escape-string-regexp": "^4.0.0",
+        "execa": "5.1.1",
         "file-loader": "^6.2.0",
         "fs-extra": "^11.1.1",
         "github-slugger": "^1.5.0",
@@ -2867,40 +3965,40 @@
         "js-yaml": "^4.1.0",
         "lodash": "^4.17.21",
         "micromatch": "^4.0.5",
+        "p-queue": "^6.6.2",
         "prompts": "^2.4.2",
         "resolve-pathname": "^3.0.0",
-        "shelljs": "^0.8.5",
         "tslib": "^2.6.0",
         "url-loader": "^4.1.1",
         "utility-types": "^3.10.0",
         "webpack": "^5.88.1"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       }
     },
     "node_modules/@docusaurus/utils-common": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.6.1.tgz",
-      "integrity": "sha512-LX1qiTiC0aS8c92uZ+Wj2iNCNJyYZJIKY8/nZDKNMBfo759VYVS3RX3fKP3DznB+16sYp7++MyCz/T6fOGaRfw==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.9.1.tgz",
+      "integrity": "sha512-4M1u5Q8Zn2CYL2TJ864M51FV4YlxyGyfC3x+7CLuR6xsyTVNBNU4QMcPgsTHRS9J2+X6Lq7MyH6hiWXyi/sXUQ==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/types": "3.6.1",
+        "@docusaurus/types": "3.9.1",
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       }
     },
     "node_modules/@docusaurus/utils-validation": {
-      "version": "3.6.1",
-      "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.6.1.tgz",
-      "integrity": "sha512-+iMd6zRl5cJQm7nUP+7pSO/oAXsN79eHO34ME7l2YJt4GEAr70l5kkD58u2jEPpp+wSXT70c7x2A2lzJI1E8jw==",
+      "version": "3.9.1",
+      "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.9.1.tgz",
+      "integrity": "sha512-5bzab5si3E1udrlZuVGR17857Lfwe8iFPoy5AvMP9PXqDfoyIKT7gDQgAmxdRDMurgHaJlyhXEHHdzDKkOxxZQ==",
       "license": "MIT",
       "dependencies": {
-        "@docusaurus/logger": "3.6.1",
-        "@docusaurus/utils": "3.6.1",
-        "@docusaurus/utils-common": "3.6.1",
+        "@docusaurus/logger": "3.9.1",
+        "@docusaurus/utils": "3.9.1",
+        "@docusaurus/utils-common": "3.9.1",
         "fs-extra": "^11.2.0",
         "joi": "^17.9.2",
         "js-yaml": "^4.1.0",
@@ -2908,7 +4006,7 @@
         "tslib": "^2.6.0"
       },
       "engines": {
-        "node": ">=18.0"
+        "node": ">=20.0"
       }
     },
     "node_modules/@hapi/hoek": {
@@ -2956,26 +4054,29 @@
       }
     },
     "node_modules/@jridgewell/gen-mapping": {
-      "version": "0.3.5",
+      "version": "0.3.13",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+      "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
       "license": "MIT",
       "dependencies": {
-        "@jridgewell/set-array": "^1.2.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/sourcemap-codec": "^1.5.0",
         "@jridgewell/trace-mapping": "^0.3.24"
-      },
-      "engines": {
-        "node": ">=6.0.0"
       }
     },
-    "node_modules/@jridgewell/resolve-uri": {
-      "version": "3.1.2",
+    "node_modules/@jridgewell/remapping": {
+      "version": "2.3.5",
+      "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+      "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
       "license": "MIT",
-      "engines": {
-        "node": ">=6.0.0"
+      "dependencies": {
+        "@jridgewell/gen-mapping": "^0.3.5",
+        "@jridgewell/trace-mapping": "^0.3.24"
       }
     },
-    "node_modules/@jridgewell/set-array": {
-      "version": "1.2.1",
+    "node_modules/@jridgewell/resolve-uri": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+      "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
       "license": "MIT",
       "engines": {
         "node": ">=6.0.0"
@@ -2994,27 +4095,145 @@
       "license": "MIT"
     },
     "node_modules/@jridgewell/trace-mapping": {
-      "version": "0.3.25",
+      "version": "0.3.31",
+      "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+      "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
       "license": "MIT",
       "dependencies": {
         "@jridgewell/resolve-uri": "^3.1.0",
         "@jridgewell/sourcemap-codec": "^1.4.14"
       }
     },
+    "node_modules/@jsonjoy.com/base64": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz",
+      "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
+    "node_modules/@jsonjoy.com/buffers": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.0.tgz",
+      "integrity": "sha512-6RX+W5a+ZUY/c/7J5s5jK9UinLfJo5oWKh84fb4X0yK2q4WXEWUWZWuEMjvCb1YNUQhEAhUfr5scEGOH7jC4YQ==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
+    "node_modules/@jsonjoy.com/codegen": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz",
+      "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
+    "node_modules/@jsonjoy.com/json-pack": {
+      "version": "1.20.0",
+      "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.20.0.tgz",
+      "integrity": "sha512-adcXFVorSQULtT4XDL0giRLr2EVGIcyWm6eQKZWTrRA4EEydGOY8QVQtL0PaITQpUyu+lOd/QOicw6vdy1v8QQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@jsonjoy.com/base64": "^1.1.2",
+        "@jsonjoy.com/buffers": "^1.2.0",
+        "@jsonjoy.com/codegen": "^1.0.0",
+        "@jsonjoy.com/json-pointer": "^1.0.2",
+        "@jsonjoy.com/util": "^1.9.0",
+        "hyperdyperid": "^1.2.0",
+        "thingies": "^2.5.0"
+      },
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
+    "node_modules/@jsonjoy.com/json-pointer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz",
+      "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@jsonjoy.com/codegen": "^1.0.0",
+        "@jsonjoy.com/util": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
+    "node_modules/@jsonjoy.com/util": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz",
+      "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@jsonjoy.com/buffers": "^1.0.0",
+        "@jsonjoy.com/codegen": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
     "node_modules/@leichtgewicht/ip-codec": {
       "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
+      "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
       "license": "MIT"
     },
     "node_modules/@mdx-js/mdx": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz",
-      "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz",
+      "integrity": "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==",
       "license": "MIT",
       "dependencies": {
         "@types/estree": "^1.0.0",
         "@types/estree-jsx": "^1.0.0",
         "@types/hast": "^3.0.0",
         "@types/mdx": "^2.0.0",
+        "acorn": "^8.0.0",
         "collapse-white-space": "^2.0.0",
         "devlop": "^1.0.0",
         "estree-util-is-identifier-name": "^3.0.0",
@@ -3058,6 +4277,8 @@
     },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
       "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "2.0.5",
@@ -3069,6 +4290,8 @@
     },
     "node_modules/@nodelib/fs.stat": {
       "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
       "license": "MIT",
       "engines": {
         "node": ">= 8"
@@ -3076,6 +4299,8 @@
     },
     "node_modules/@nodelib/fs.walk": {
       "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
       "license": "MIT",
       "dependencies": {
         "@nodelib/fs.scandir": "2.1.5",
@@ -3085,8 +4310,19 @@
         "node": ">= 8"
       }
     },
+    "node_modules/@opentelemetry/api": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
+      "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
     "node_modules/@pnpm/config.env-replace": {
       "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
+      "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
       "license": "MIT",
       "engines": {
         "node": ">=12.22.0"
@@ -3094,6 +4330,8 @@
     },
     "node_modules/@pnpm/network.ca-file": {
       "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+      "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
       "license": "MIT",
       "dependencies": {
         "graceful-fs": "4.2.10"
@@ -3104,10 +4342,14 @@
     },
     "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": {
       "version": "4.2.10",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+      "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
       "license": "ISC"
     },
     "node_modules/@pnpm/npm-conf": {
       "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz",
+      "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==",
       "license": "MIT",
       "dependencies": {
         "@pnpm/config.env-replace": "^1.1.0",
@@ -3172,6 +4414,12 @@
         "micromark-util-symbol": "^1.0.1"
       }
     },
+    "node_modules/@standard-schema/spec": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz",
+      "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==",
+      "license": "MIT"
+    },
     "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz",
@@ -3431,6 +4679,8 @@
     },
     "node_modules/@szmarczak/http-timer": {
       "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+      "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
       "license": "MIT",
       "dependencies": {
         "defer-to-connect": "^2.0.1"
@@ -3448,17 +4698,10 @@
         "node": ">=10.13.0"
       }
     },
-    "node_modules/@types/acorn": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
-      "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/estree": "*"
-      }
-    },
     "node_modules/@types/body-parser": {
-      "version": "1.19.5",
+      "version": "1.19.6",
+      "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
+      "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
       "license": "MIT",
       "dependencies": {
         "@types/connect": "*",
@@ -3467,6 +4710,8 @@
     },
     "node_modules/@types/bonjour": {
       "version": "3.5.13",
+      "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz",
+      "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*"
@@ -3474,6 +4719,8 @@
     },
     "node_modules/@types/connect": {
       "version": "3.4.38",
+      "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+      "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*"
@@ -3481,6 +4728,8 @@
     },
     "node_modules/@types/connect-history-api-fallback": {
       "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz",
+      "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==",
       "license": "MIT",
       "dependencies": {
         "@types/express-serve-static-core": "*",
@@ -3530,7 +4779,9 @@
       }
     },
     "node_modules/@types/express": {
-      "version": "4.17.21",
+      "version": "4.17.23",
+      "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz",
+      "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==",
       "license": "MIT",
       "dependencies": {
         "@types/body-parser": "*",
@@ -3540,7 +4791,9 @@
       }
     },
     "node_modules/@types/express-serve-static-core": {
-      "version": "4.19.5",
+      "version": "4.19.7",
+      "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz",
+      "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*",
@@ -3566,22 +4819,32 @@
     },
     "node_modules/@types/history": {
       "version": "4.7.11",
+      "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz",
+      "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==",
       "license": "MIT"
     },
     "node_modules/@types/html-minifier-terser": {
       "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+      "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==",
       "license": "MIT"
     },
     "node_modules/@types/http-cache-semantics": {
       "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
+      "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
       "license": "MIT"
     },
     "node_modules/@types/http-errors": {
-      "version": "2.0.4",
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
+      "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
       "license": "MIT"
     },
     "node_modules/@types/http-proxy": {
-      "version": "1.17.15",
+      "version": "1.17.16",
+      "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz",
+      "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*"
@@ -3613,6 +4876,8 @@
     },
     "node_modules/@types/json-schema": {
       "version": "7.0.15",
+      "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+      "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
       "license": "MIT"
     },
     "node_modules/@types/mdast": {
@@ -3626,16 +4891,20 @@
     },
     "node_modules/@types/mdx": {
       "version": "2.0.13",
+      "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
+      "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==",
       "license": "MIT"
     },
     "node_modules/@types/mime": {
       "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+      "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
       "license": "MIT"
     },
     "node_modules/@types/ms": {
-      "version": "0.7.34",
-      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
-      "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
+      "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
       "license": "MIT"
     },
     "node_modules/@types/node": {
@@ -3646,18 +4915,18 @@
       }
     },
     "node_modules/@types/node-forge": {
-      "version": "1.3.11",
+      "version": "1.3.14",
+      "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz",
+      "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*"
       }
     },
-    "node_modules/@types/parse-json": {
-      "version": "4.0.2",
-      "license": "MIT"
-    },
     "node_modules/@types/parse5": {
       "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz",
+      "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==",
       "license": "MIT"
     },
     "node_modules/@types/prismjs": {
@@ -3669,11 +4938,15 @@
       "license": "MIT"
     },
     "node_modules/@types/qs": {
-      "version": "6.9.16",
+      "version": "6.14.0",
+      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
+      "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
       "license": "MIT"
     },
     "node_modules/@types/range-parser": {
       "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+      "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
       "license": "MIT"
     },
     "node_modules/@types/react": {
@@ -3686,6 +4959,8 @@
     },
     "node_modules/@types/react-router": {
       "version": "5.1.20",
+      "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
+      "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==",
       "license": "MIT",
       "dependencies": {
         "@types/history": "^4.7.11",
@@ -3694,6 +4969,8 @@
     },
     "node_modules/@types/react-router-config": {
       "version": "5.0.11",
+      "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.11.tgz",
+      "integrity": "sha512-WmSAg7WgqW7m4x8Mt4N6ZyKz0BubSj/2tVUMsAHp+Yd2AMwcSbeFq9WympT19p5heCFmF97R9eD5uUR/t4HEqw==",
       "license": "MIT",
       "dependencies": {
         "@types/history": "^4.7.11",
@@ -3703,6 +4980,8 @@
     },
     "node_modules/@types/react-router-dom": {
       "version": "5.3.3",
+      "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz",
+      "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==",
       "license": "MIT",
       "dependencies": {
         "@types/history": "^4.7.11",
@@ -3711,7 +4990,9 @@
       }
     },
     "node_modules/@types/retry": {
-      "version": "0.12.0",
+      "version": "0.12.2",
+      "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
+      "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==",
       "license": "MIT"
     },
     "node_modules/@types/sax": {
@@ -3724,31 +5005,48 @@
       }
     },
     "node_modules/@types/send": {
-      "version": "0.17.4",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz",
+      "integrity": "sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==",
       "license": "MIT",
       "dependencies": {
-        "@types/mime": "^1",
         "@types/node": "*"
       }
     },
     "node_modules/@types/serve-index": {
       "version": "1.9.4",
+      "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz",
+      "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==",
       "license": "MIT",
       "dependencies": {
         "@types/express": "*"
       }
     },
     "node_modules/@types/serve-static": {
-      "version": "1.15.7",
+      "version": "1.15.9",
+      "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz",
+      "integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==",
       "license": "MIT",
       "dependencies": {
         "@types/http-errors": "*",
         "@types/node": "*",
-        "@types/send": "*"
+        "@types/send": "<1"
+      }
+    },
+    "node_modules/@types/serve-static/node_modules/@types/send": {
+      "version": "0.17.5",
+      "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
+      "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/mime": "^1",
+        "@types/node": "*"
       }
     },
     "node_modules/@types/sockjs": {
       "version": "0.3.36",
+      "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz",
+      "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*"
@@ -3761,7 +5059,9 @@
       "license": "MIT"
     },
     "node_modules/@types/ws": {
-      "version": "8.5.12",
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*"
@@ -3783,11 +5083,20 @@
       "license": "MIT"
     },
     "node_modules/@ungap/structured-clone": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
-      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+      "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
       "license": "ISC"
     },
+    "node_modules/@vercel/oidc": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.2.tgz",
+      "integrity": "sha512-JekxQ0RApo4gS4un/iMGsIL1/k4KUBe3HmnGcDvzHuFBdQdudEJgTqcsJC7y6Ul4Yw5CeykgvQbX2XeEJd0+DA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">= 20"
+      }
+    },
     "node_modules/@webassemblyjs/ast": {
       "version": "1.12.1",
       "license": "MIT",
@@ -3906,18 +5215,26 @@
     },
     "node_modules/@xtuc/ieee754": {
       "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
       "license": "BSD-3-Clause"
     },
     "node_modules/@xtuc/long": {
       "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
       "license": "Apache-2.0"
     },
     "node_modules/abbrev": {
       "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
       "license": "ISC"
     },
     "node_modules/accepts": {
       "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
       "license": "MIT",
       "dependencies": {
         "mime-types": "~2.1.34",
@@ -3929,6 +5246,8 @@
     },
     "node_modules/accepts/node_modules/mime-db": {
       "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -3936,6 +5255,8 @@
     },
     "node_modules/accepts/node_modules/mime-types": {
       "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
       "license": "MIT",
       "dependencies": {
         "mime-db": "1.52.0"
@@ -3944,6 +5265,15 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/accepts/node_modules/negotiator": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
     "node_modules/acorn": {
       "version": "8.14.0",
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
@@ -3967,6 +5297,8 @@
     },
     "node_modules/acorn-walk": {
       "version": "8.3.4",
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+      "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
       "license": "MIT",
       "dependencies": {
         "acorn": "^8.11.0"
@@ -3977,6 +5309,8 @@
     },
     "node_modules/address": {
       "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz",
+      "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==",
       "license": "MIT",
       "engines": {
         "node": ">= 10.0.0"
@@ -3984,6 +5318,8 @@
     },
     "node_modules/aggregate-error": {
       "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+      "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
       "license": "MIT",
       "dependencies": {
         "clean-stack": "^2.0.0",
@@ -3993,8 +5329,28 @@
         "node": ">=8"
       }
     },
+    "node_modules/ai": {
+      "version": "5.0.65",
+      "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.65.tgz",
+      "integrity": "sha512-orwsNKAoAmTwHkoy7TG/7nc65SD3hy7k+x8xVHIzfw8CibZm/U2cdbR1ZUex6H2Rpf+uoZpvyQ05FWBJNw7V8A==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@ai-sdk/gateway": "1.0.36",
+        "@ai-sdk/provider": "2.0.0",
+        "@ai-sdk/provider-utils": "3.0.11",
+        "@opentelemetry/api": "1.9.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "zod": "^3.25.76 || ^4.1.8"
+      }
+    },
     "node_modules/ajv": {
       "version": "8.17.1",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+      "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
       "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.3",
@@ -4009,6 +5365,8 @@
     },
     "node_modules/ajv-formats": {
       "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+      "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
       "license": "MIT",
       "dependencies": {
         "ajv": "^8.0.0"
@@ -4024,90 +5382,57 @@
     },
     "node_modules/ajv-keywords": {
       "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+      "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
       "license": "MIT",
       "dependencies": {
-        "fast-deep-equal": "^3.1.3"
-      },
-      "peerDependencies": {
-        "ajv": "^8.8.2"
-      }
-    },
-    "node_modules/algoliasearch": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz",
-      "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/cache-browser-local-storage": "4.24.0",
-        "@algolia/cache-common": "4.24.0",
-        "@algolia/cache-in-memory": "4.24.0",
-        "@algolia/client-account": "4.24.0",
-        "@algolia/client-analytics": "4.24.0",
-        "@algolia/client-common": "4.24.0",
-        "@algolia/client-personalization": "4.24.0",
-        "@algolia/client-search": "4.24.0",
-        "@algolia/logger-common": "4.24.0",
-        "@algolia/logger-console": "4.24.0",
-        "@algolia/recommend": "4.24.0",
-        "@algolia/requester-browser-xhr": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/requester-node-http": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/algoliasearch-helper": {
-      "version": "3.22.5",
-      "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.22.5.tgz",
-      "integrity": "sha512-lWvhdnc+aKOKx8jyA3bsdEgHzm/sglC4cYdMG4xSQyRiPLJVJtH/IVYZG3Hp6PkTEhQqhyVYkeP9z2IlcHJsWw==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/events": "^4.0.1"
-      },
-      "peerDependencies": {
-        "algoliasearch": ">= 3.1 < 6"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/@algolia/client-common": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz",
-      "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
-      }
-    },
-    "node_modules/algoliasearch/node_modules/@algolia/client-search": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz",
-      "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/client-common": "4.24.0",
-        "@algolia/requester-common": "4.24.0",
-        "@algolia/transporter": "4.24.0"
+        "fast-deep-equal": "^3.1.3"
+      },
+      "peerDependencies": {
+        "ajv": "^8.8.2"
       }
     },
-    "node_modules/algoliasearch/node_modules/@algolia/requester-browser-xhr": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz",
-      "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==",
-      "license": "MIT",
-      "dependencies": {
-        "@algolia/requester-common": "4.24.0"
+    "node_modules/algoliasearch": {
+      "version": "5.40.0",
+      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.40.0.tgz",
+      "integrity": "sha512-a9aIL2E3Z7uYUPMCmjMFFd5MWhn+ccTubEvnMy7rOTZCB62dXBJtz0R5BZ/TPuX3R9ocBsgWuAbGWQ+Ph4Fmlg==",
+      "license": "MIT",
+      "dependencies": {
+        "@algolia/abtesting": "1.6.0",
+        "@algolia/client-abtesting": "5.40.0",
+        "@algolia/client-analytics": "5.40.0",
+        "@algolia/client-common": "5.40.0",
+        "@algolia/client-insights": "5.40.0",
+        "@algolia/client-personalization": "5.40.0",
+        "@algolia/client-query-suggestions": "5.40.0",
+        "@algolia/client-search": "5.40.0",
+        "@algolia/ingestion": "1.40.0",
+        "@algolia/monitoring": "1.40.0",
+        "@algolia/recommend": "5.40.0",
+        "@algolia/requester-browser-xhr": "5.40.0",
+        "@algolia/requester-fetch": "5.40.0",
+        "@algolia/requester-node-http": "5.40.0"
+      },
+      "engines": {
+        "node": ">= 14.0.0"
       }
     },
-    "node_modules/algoliasearch/node_modules/@algolia/requester-node-http": {
-      "version": "4.24.0",
-      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz",
-      "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==",
+    "node_modules/algoliasearch-helper": {
+      "version": "3.26.0",
+      "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.0.tgz",
+      "integrity": "sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw==",
       "license": "MIT",
       "dependencies": {
-        "@algolia/requester-common": "4.24.0"
+        "@algolia/events": "^4.0.1"
+      },
+      "peerDependencies": {
+        "algoliasearch": ">= 3.1 < 6"
       }
     },
     "node_modules/ansi-align": {
       "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+      "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
       "license": "ISC",
       "dependencies": {
         "string-width": "^4.1.0"
@@ -4115,10 +5440,14 @@
     },
     "node_modules/ansi-align/node_modules/emoji-regex": {
       "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
       "license": "MIT"
     },
     "node_modules/ansi-align/node_modules/string-width": {
       "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
       "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
@@ -4158,6 +5487,8 @@
     },
     "node_modules/ansi-html-community": {
       "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+      "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
       "engines": [
         "node >= 0.8.0"
       ],
@@ -4168,6 +5499,8 @@
     },
     "node_modules/ansi-regex": {
       "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -4175,6 +5508,8 @@
     },
     "node_modules/ansi-styles": {
       "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
       "license": "MIT",
       "dependencies": {
         "color-convert": "^2.0.1"
@@ -4188,6 +5523,8 @@
     },
     "node_modules/anymatch": {
       "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
       "license": "ISC",
       "dependencies": {
         "normalize-path": "^3.0.0",
@@ -4215,10 +5552,14 @@
     },
     "node_modules/array-flatten": {
       "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
       "license": "MIT"
     },
     "node_modules/array-union": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -4233,13 +5574,6 @@
         "astring": "bin/astring"
       }
     },
-    "node_modules/at-least-node": {
-      "version": "1.0.0",
-      "license": "ISC",
-      "engines": {
-        "node": ">= 4.0.0"
-      }
-    },
     "node_modules/autocomplete.js": {
       "version": "0.37.1",
       "license": "MIT",
@@ -4248,9 +5582,9 @@
       }
     },
     "node_modules/autoprefixer": {
-      "version": "10.4.20",
-      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
-      "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
+      "version": "10.4.21",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
+      "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
       "funding": [
         {
           "type": "opencollective",
@@ -4267,11 +5601,11 @@
       ],
       "license": "MIT",
       "dependencies": {
-        "browserslist": "^4.23.3",
-        "caniuse-lite": "^1.0.30001646",
+        "browserslist": "^4.24.4",
+        "caniuse-lite": "^1.0.30001702",
         "fraction.js": "^4.3.7",
         "normalize-range": "^0.1.2",
-        "picocolors": "^1.0.1",
+        "picocolors": "^1.1.1",
         "postcss-value-parser": "^4.2.0"
       },
       "bin": {
@@ -4311,13 +5645,13 @@
       }
     },
     "node_modules/babel-plugin-polyfill-corejs2": {
-      "version": "0.4.11",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
-      "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==",
+      "version": "0.4.14",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz",
+      "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/compat-data": "^7.22.6",
-        "@babel/helper-define-polyfill-provider": "^0.6.2",
+        "@babel/compat-data": "^7.27.7",
+        "@babel/helper-define-polyfill-provider": "^0.6.5",
         "semver": "^6.3.1"
       },
       "peerDependencies": {
@@ -4334,25 +5668,25 @@
       }
     },
     "node_modules/babel-plugin-polyfill-corejs3": {
-      "version": "0.10.6",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz",
-      "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==",
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
+      "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.6.2",
-        "core-js-compat": "^3.38.0"
+        "@babel/helper-define-polyfill-provider": "^0.6.5",
+        "core-js-compat": "^3.43.0"
       },
       "peerDependencies": {
         "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
       }
     },
     "node_modules/babel-plugin-polyfill-regenerator": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz",
-      "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==",
+      "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz",
+      "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/helper-define-polyfill-provider": "^0.6.2"
+        "@babel/helper-define-polyfill-provider": "^0.6.5"
       },
       "peerDependencies": {
         "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -4370,14 +5704,29 @@
     },
     "node_modules/balanced-match": {
       "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
       "license": "MIT"
     },
+    "node_modules/baseline-browser-mapping": {
+      "version": "2.8.15",
+      "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.15.tgz",
+      "integrity": "sha512-qsJ8/X+UypqxHXN75M7dF88jNK37dLBRW7LeUzCPz+TNs37G8cfWy9nWzS+LS//g600zrt2le9KuXt0rWfDz5Q==",
+      "license": "Apache-2.0",
+      "bin": {
+        "baseline-browser-mapping": "dist/cli.js"
+      }
+    },
     "node_modules/batch": {
       "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+      "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
       "license": "MIT"
     },
     "node_modules/bcp-47-match": {
       "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-1.0.3.tgz",
+      "integrity": "sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -4395,6 +5744,8 @@
     },
     "node_modules/binary-extensions": {
       "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -4405,6 +5756,8 @@
     },
     "node_modules/body-parser": {
       "version": "1.20.3",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+      "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
       "license": "MIT",
       "dependencies": {
         "bytes": "3.1.2",
@@ -4427,6 +5780,8 @@
     },
     "node_modules/body-parser/node_modules/bytes": {
       "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -4434,6 +5789,8 @@
     },
     "node_modules/body-parser/node_modules/debug": {
       "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
       "license": "MIT",
       "dependencies": {
         "ms": "2.0.0"
@@ -4441,10 +5798,14 @@
     },
     "node_modules/body-parser/node_modules/ms": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
     "node_modules/bonjour-service": {
-      "version": "1.2.1",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz",
+      "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==",
       "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.3",
@@ -4453,10 +5814,14 @@
     },
     "node_modules/boolbase": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
       "license": "ISC"
     },
     "node_modules/boxen": {
       "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz",
+      "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==",
       "license": "MIT",
       "dependencies": {
         "ansi-align": "^3.0.1",
@@ -4487,6 +5852,8 @@
     },
     "node_modules/braces": {
       "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
       "license": "MIT",
       "dependencies": {
         "fill-range": "^7.1.1"
@@ -4496,9 +5863,9 @@
       }
     },
     "node_modules/browserslist": {
-      "version": "4.24.2",
-      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz",
-      "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
+      "version": "4.26.3",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz",
+      "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==",
       "funding": [
         {
           "type": "opencollective",
@@ -4515,10 +5882,11 @@
       ],
       "license": "MIT",
       "dependencies": {
-        "caniuse-lite": "^1.0.30001669",
-        "electron-to-chromium": "^1.5.41",
-        "node-releases": "^2.0.18",
-        "update-browserslist-db": "^1.1.1"
+        "baseline-browser-mapping": "^2.8.9",
+        "caniuse-lite": "^1.0.30001746",
+        "electron-to-chromium": "^1.5.227",
+        "node-releases": "^2.0.21",
+        "update-browserslist-db": "^1.1.3"
       },
       "bin": {
         "browserslist": "cli.js"
@@ -4529,10 +5897,29 @@
     },
     "node_modules/buffer-from": {
       "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
       "license": "MIT"
     },
+    "node_modules/bundle-name": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+      "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+      "license": "MIT",
+      "dependencies": {
+        "run-applescript": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/bytes": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+      "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -4540,6 +5927,8 @@
     },
     "node_modules/cacheable-lookup": {
       "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+      "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
       "license": "MIT",
       "engines": {
         "node": ">=14.16"
@@ -4547,6 +5936,8 @@
     },
     "node_modules/cacheable-request": {
       "version": "10.2.14",
+      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
+      "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
       "license": "MIT",
       "dependencies": {
         "@types/http-cache-semantics": "^4.0.2",
@@ -4562,14 +5953,44 @@
       }
     },
     "node_modules/call-bind": {
-      "version": "1.0.7",
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+      "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
       "license": "MIT",
       "dependencies": {
+        "call-bind-apply-helpers": "^1.0.0",
         "es-define-property": "^1.0.0",
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
         "get-intrinsic": "^1.2.4",
-        "set-function-length": "^1.2.1"
+        "set-function-length": "^1.2.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/call-bind-apply-helpers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+      "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/call-bound": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+      "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind-apply-helpers": "^1.0.2",
+        "get-intrinsic": "^1.3.0"
       },
       "engines": {
         "node": ">= 0.4"
@@ -4580,6 +6001,8 @@
     },
     "node_modules/callsites": {
       "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -4587,6 +6010,8 @@
     },
     "node_modules/camel-case": {
       "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+      "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
       "license": "MIT",
       "dependencies": {
         "pascal-case": "^3.1.2",
@@ -4595,6 +6020,8 @@
     },
     "node_modules/camelcase": {
       "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+      "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -4616,9 +6043,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001679",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001679.tgz",
-      "integrity": "sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==",
+      "version": "1.0.30001749",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001749.tgz",
+      "integrity": "sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==",
       "funding": [
         {
           "type": "opencollective",
@@ -4647,6 +6074,8 @@
     },
     "node_modules/chalk": {
       "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
       "license": "MIT",
       "dependencies": {
         "ansi-styles": "^4.1.0",
@@ -4748,6 +6177,8 @@
     },
     "node_modules/chokidar": {
       "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
       "license": "MIT",
       "dependencies": {
         "anymatch": "~3.1.2",
@@ -4770,6 +6201,8 @@
     },
     "node_modules/chrome-trace-event": {
       "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
+      "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
       "license": "MIT",
       "engines": {
         "node": ">=6.0"
@@ -4777,6 +6210,8 @@
     },
     "node_modules/ci-info": {
       "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+      "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
       "funding": [
         {
           "type": "github",
@@ -4790,6 +6225,8 @@
     },
     "node_modules/clean-css": {
       "version": "5.3.3",
+      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
+      "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
       "license": "MIT",
       "dependencies": {
         "source-map": "~0.6.0"
@@ -4800,6 +6237,8 @@
     },
     "node_modules/clean-css/node_modules/source-map": {
       "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
       "license": "BSD-3-Clause",
       "engines": {
         "node": ">=0.10.0"
@@ -4807,6 +6246,8 @@
     },
     "node_modules/clean-stack": {
       "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+      "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -4814,6 +6255,8 @@
     },
     "node_modules/cli-boxes": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+      "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -4824,6 +6267,8 @@
     },
     "node_modules/cli-table3": {
       "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz",
+      "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==",
       "license": "MIT",
       "dependencies": {
         "string-width": "^4.2.0"
@@ -4837,10 +6282,14 @@
     },
     "node_modules/cli-table3/node_modules/emoji-regex": {
       "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
       "license": "MIT"
     },
     "node_modules/cli-table3/node_modules/string-width": {
       "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
       "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
@@ -4867,6 +6316,8 @@
     },
     "node_modules/clsx": {
       "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+      "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -4884,6 +6335,8 @@
     },
     "node_modules/color-convert": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
       "license": "MIT",
       "dependencies": {
         "color-name": "~1.1.4"
@@ -4894,10 +6347,14 @@
     },
     "node_modules/color-name": {
       "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
       "license": "MIT"
     },
     "node_modules/color-support": {
       "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+      "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
       "license": "ISC",
       "bin": {
         "color-support": "bin.js"
@@ -4911,10 +6368,14 @@
     },
     "node_modules/colorette": {
       "version": "2.0.20",
+      "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
+      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
       "license": "MIT"
     },
     "node_modules/combine-promises": {
       "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.2.0.tgz",
+      "integrity": "sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -4922,6 +6383,8 @@
     },
     "node_modules/comma-separated-tokens": {
       "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz",
+      "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -4930,6 +6393,8 @@
     },
     "node_modules/commander": {
       "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+      "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
       "license": "MIT",
       "engines": {
         "node": ">= 6"
@@ -4943,6 +6408,8 @@
     },
     "node_modules/compressible": {
       "version": "2.0.18",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
       "license": "MIT",
       "dependencies": {
         "mime-db": ">= 1.43.0 < 2"
@@ -4952,7 +6419,9 @@
       }
     },
     "node_modules/compressible/node_modules/mime-db": {
-      "version": "1.53.0",
+      "version": "1.54.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+      "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -4987,6 +6456,8 @@
     },
     "node_modules/compression/node_modules/debug": {
       "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
       "license": "MIT",
       "dependencies": {
         "ms": "2.0.0"
@@ -4994,23 +6465,20 @@
     },
     "node_modules/compression/node_modules/ms": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
-    "node_modules/compression/node_modules/negotiator": {
-      "version": "0.6.4",
-      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
-      "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.6"
-      }
-    },
     "node_modules/concat-map": {
       "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
       "license": "MIT"
     },
     "node_modules/config-chain": {
       "version": "1.1.13",
+      "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+      "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
       "license": "MIT",
       "dependencies": {
         "ini": "^1.3.4",
@@ -5019,6 +6487,8 @@
     },
     "node_modules/configstore": {
       "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
+      "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "dot-prop": "^6.0.1",
@@ -5036,15 +6506,17 @@
     },
     "node_modules/connect-history-api-fallback": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+      "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==",
       "license": "MIT",
       "engines": {
         "node": ">=0.8"
       }
     },
     "node_modules/consola": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
-      "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
+      "version": "3.4.2",
+      "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz",
+      "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==",
       "license": "MIT",
       "engines": {
         "node": "^14.18.0 || >=16.10.0"
@@ -5052,6 +6524,8 @@
     },
     "node_modules/console-control-strings": {
       "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+      "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
       "license": "ISC"
     },
     "node_modules/content-disposition": {
@@ -5065,6 +6539,8 @@
     },
     "node_modules/content-type": {
       "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -5080,26 +6556,17 @@
       "version": "0.7.1",
       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
       "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+      "license": "MIT",
       "engines": {
         "node": ">= 0.6"
       }
     },
     "node_modules/cookie-signature": {
       "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
       "license": "MIT"
     },
-    "node_modules/copy-text-to-clipboard": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz",
-      "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/copy-webpack-plugin": {
       "version": "11.0.0",
       "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz",
@@ -5177,12 +6644,12 @@
       }
     },
     "node_modules/core-js-compat": {
-      "version": "3.39.0",
-      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz",
-      "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==",
+      "version": "3.46.0",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz",
+      "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==",
       "license": "MIT",
       "dependencies": {
-        "browserslist": "^4.24.2"
+        "browserslist": "^4.26.3"
       },
       "funding": {
         "type": "opencollective",
@@ -5190,9 +6657,9 @@
       }
     },
     "node_modules/core-js-pure": {
-      "version": "3.39.0",
-      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz",
-      "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==",
+      "version": "3.46.0",
+      "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.46.0.tgz",
+      "integrity": "sha512-NMCW30bHNofuhwLhYPt66OLOKTMbOhgTTatKVbaQC3KRHpTCiRIBYvtshr+NBYSnBxwAFhjW/RfJ0XbIjS16rw==",
       "hasInstallScript": true,
       "license": "MIT",
       "funding": {
@@ -5202,6 +6669,8 @@
     },
     "node_modules/core-util-is": {
       "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
       "license": "MIT"
     },
     "node_modules/cosmiconfig": {
@@ -5246,6 +6715,8 @@
     },
     "node_modules/crypto-random-string": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+      "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
       "license": "MIT",
       "dependencies": {
         "type-fest": "^1.0.1"
@@ -5259,6 +6730,8 @@
     },
     "node_modules/crypto-random-string/node_modules/type-fest": {
       "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+      "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
       "license": "(MIT OR CC0-1.0)",
       "engines": {
         "node": ">=10"
@@ -5267,10 +6740,48 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/css-blank-pseudo": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz",
+      "integrity": "sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/css-declaration-sorter": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz",
-      "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz",
+      "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==",
       "license": "ISC",
       "engines": {
         "node": "^14 || ^16 || >=18"
@@ -5279,6 +6790,68 @@
         "postcss": "^8.0.9"
       }
     },
+    "node_modules/css-has-pseudo": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz",
+      "integrity": "sha512-oG+vKuGyqe/xvEMoxAQrhi7uY16deJR3i7wwhBerVrGQKSqUC5GiOVxTpM9F9B9hw0J+eKeOWLH7E9gZ1Dr5rA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/selector-specificity": "^5.0.0",
+        "postcss-selector-parser": "^7.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/css-has-pseudo/node_modules/@csstools/selector-specificity": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+      "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      }
+    },
+    "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/css-loader": {
       "version": "6.11.0",
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
@@ -5358,10 +6931,32 @@
         }
       }
     },
+    "node_modules/css-prefers-color-scheme": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz",
+      "integrity": "sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
     "node_modules/css-select": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
-      "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+      "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "boolbase": "^1.0.0",
@@ -5376,6 +6971,8 @@
     },
     "node_modules/css-selector-parser": {
       "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz",
+      "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==",
       "license": "MIT"
     },
     "node_modules/css-tree": {
@@ -5401,6 +6998,22 @@
         "url": "https://github.com/sponsors/fb55"
       }
     },
+    "node_modules/cssdb": {
+      "version": "8.4.2",
+      "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.4.2.tgz",
+      "integrity": "sha512-PzjkRkRUS+IHDJohtxkIczlxPPZqRo0nXplsYXOMBRPjcVRjj1W4DfvRgshUYTVuUigU7ptVYkFJQ7abUB0nyg==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        }
+      ],
+      "license": "MIT-0"
+    },
     "node_modules/cssesc": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -5545,14 +7158,20 @@
     },
     "node_modules/csstype": {
       "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
       "license": "MIT"
     },
     "node_modules/debounce": {
       "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
+      "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
       "license": "MIT"
     },
     "node_modules/debug": {
-      "version": "4.3.7",
+      "version": "4.4.3",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+      "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
       "license": "MIT",
       "dependencies": {
         "ms": "^2.1.3"
@@ -5567,9 +7186,9 @@
       }
     },
     "node_modules/decode-named-character-reference": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
-      "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
+      "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
       "license": "MIT",
       "dependencies": {
         "character-entities": "^2.0.0"
@@ -5581,6 +7200,8 @@
     },
     "node_modules/decompress-response": {
       "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
       "license": "MIT",
       "dependencies": {
         "mimic-response": "^3.1.0"
@@ -5594,6 +7215,8 @@
     },
     "node_modules/decompress-response/node_modules/mimic-response": {
       "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -5604,6 +7227,8 @@
     },
     "node_modules/deep-extend": {
       "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
       "license": "MIT",
       "engines": {
         "node": ">=4.0.0"
@@ -5611,23 +7236,45 @@
     },
     "node_modules/deepmerge": {
       "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+      "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
     },
-    "node_modules/default-gateway": {
-      "version": "6.0.3",
-      "license": "BSD-2-Clause",
+    "node_modules/default-browser": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
+      "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+      "license": "MIT",
       "dependencies": {
-        "execa": "^5.0.0"
+        "bundle-name": "^4.1.0",
+        "default-browser-id": "^5.0.0"
       },
       "engines": {
-        "node": ">= 10"
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/default-browser-id": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
+      "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/defer-to-connect": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
+      "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -5635,6 +7282,8 @@
     },
     "node_modules/define-data-property": {
       "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
       "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0",
@@ -5650,6 +7299,8 @@
     },
     "node_modules/define-lazy-prop": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -5672,28 +7323,10 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/del": {
-      "version": "6.1.1",
-      "license": "MIT",
-      "dependencies": {
-        "globby": "^11.0.1",
-        "graceful-fs": "^4.2.4",
-        "is-glob": "^4.0.1",
-        "is-path-cwd": "^2.2.0",
-        "is-path-inside": "^3.0.2",
-        "p-map": "^4.0.0",
-        "rimraf": "^3.0.2",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/depd": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -5710,6 +7343,8 @@
     },
     "node_modules/destroy": {
       "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8",
@@ -5718,10 +7353,14 @@
     },
     "node_modules/detect-node": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
       "license": "MIT"
     },
     "node_modules/detect-port": {
       "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz",
+      "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==",
       "license": "MIT",
       "dependencies": {
         "address": "^1.0.1",
@@ -5735,32 +7374,6 @@
         "node": ">= 4.0.0"
       }
     },
-    "node_modules/detect-port-alt": {
-      "version": "1.1.6",
-      "license": "MIT",
-      "dependencies": {
-        "address": "^1.0.1",
-        "debug": "^2.6.0"
-      },
-      "bin": {
-        "detect": "bin/detect-port",
-        "detect-port": "bin/detect-port"
-      },
-      "engines": {
-        "node": ">= 4.2.1"
-      }
-    },
-    "node_modules/detect-port-alt/node_modules/debug": {
-      "version": "2.6.9",
-      "license": "MIT",
-      "dependencies": {
-        "ms": "2.0.0"
-      }
-    },
-    "node_modules/detect-port-alt/node_modules/ms": {
-      "version": "2.0.0",
-      "license": "MIT"
-    },
     "node_modules/devlop": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
@@ -5776,6 +7389,8 @@
     },
     "node_modules/dir-glob": {
       "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+      "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
       "license": "MIT",
       "dependencies": {
         "path-type": "^4.0.0"
@@ -5786,6 +7401,8 @@
     },
     "node_modules/direction": {
       "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz",
+      "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==",
       "license": "MIT",
       "bin": {
         "direction": "cli.js"
@@ -5797,6 +7414,8 @@
     },
     "node_modules/dns-packet": {
       "version": "5.6.1",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
+      "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
       "license": "MIT",
       "dependencies": {
         "@leichtgewicht/ip-codec": "^2.0.1"
@@ -5835,10 +7454,14 @@
     },
     "node_modules/docusaurus-lunr-search/node_modules/@types/unist": {
       "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
       "license": "MIT"
     },
     "node_modules/docusaurus-lunr-search/node_modules/bail": {
       "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
+      "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -5854,6 +7477,8 @@
     },
     "node_modules/docusaurus-lunr-search/node_modules/is-plain-obj": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+      "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -5861,6 +7486,8 @@
     },
     "node_modules/docusaurus-lunr-search/node_modules/trough": {
       "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
+      "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -5885,6 +7512,8 @@
     },
     "node_modules/docusaurus-lunr-search/node_modules/unist-util-stringify-position": {
       "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+      "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.2"
@@ -5896,6 +7525,8 @@
     },
     "node_modules/docusaurus-lunr-search/node_modules/vfile": {
       "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
+      "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -5910,6 +7541,8 @@
     },
     "node_modules/docusaurus-lunr-search/node_modules/vfile-message": {
       "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+      "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -5922,6 +7555,8 @@
     },
     "node_modules/dom-converter": {
       "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
       "license": "MIT",
       "dependencies": {
         "utila": "~0.4"
@@ -5943,6 +7578,8 @@
     },
     "node_modules/domelementtype": {
       "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
       "funding": [
         {
           "type": "github",
@@ -5967,9 +7604,9 @@
       }
     },
     "node_modules/domutils": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
-      "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+      "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "dom-serializer": "^2.0.0",
@@ -5982,6 +7619,8 @@
     },
     "node_modules/dot-case": {
       "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+      "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
       "license": "MIT",
       "dependencies": {
         "no-case": "^3.0.4",
@@ -5990,6 +7629,8 @@
     },
     "node_modules/dot-prop": {
       "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+      "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
       "license": "MIT",
       "dependencies": {
         "is-obj": "^2.0.0"
@@ -6003,31 +7644,55 @@
     },
     "node_modules/dot-prop/node_modules/is-obj": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+      "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
+    "node_modules/dunder-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+      "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind-apply-helpers": "^1.0.1",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.2.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/duplexer": {
       "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+      "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
       "license": "MIT"
     },
     "node_modules/eastasianwidth": {
       "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
       "license": "MIT"
     },
     "node_modules/ee-first": {
       "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
       "license": "MIT"
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.55",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz",
-      "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==",
+      "version": "1.5.234",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.234.tgz",
+      "integrity": "sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==",
       "license": "ISC"
     },
     "node_modules/emoji-regex": {
       "version": "9.2.2",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+      "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
       "license": "MIT"
     },
     "node_modules/emojilib": {
@@ -6057,6 +7722,8 @@
     },
     "node_modules/encodeurl": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -6086,24 +7753,27 @@
       }
     },
     "node_modules/error-ex": {
-      "version": "1.3.2",
+      "version": "1.3.4",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+      "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
       "license": "MIT",
       "dependencies": {
         "is-arrayish": "^0.2.1"
       }
     },
     "node_modules/es-define-property": {
-      "version": "1.0.0",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+      "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
       "license": "MIT",
-      "dependencies": {
-        "get-intrinsic": "^1.2.4"
-      },
       "engines": {
         "node": ">= 0.4"
       }
     },
     "node_modules/es-errors": {
       "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -6113,6 +7783,18 @@
       "version": "1.5.4",
       "license": "MIT"
     },
+    "node_modules/es-object-atoms": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+      "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/esast-util-from-estree": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz",
@@ -6156,6 +7838,8 @@
     },
     "node_modules/escape-goat": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
+      "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
       "license": "MIT",
       "engines": {
         "node": ">=12"
@@ -6166,10 +7850,14 @@
     },
     "node_modules/escape-html": {
       "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
       "license": "MIT"
     },
     "node_modules/escape-string-regexp": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -6180,6 +7868,8 @@
     },
     "node_modules/eslint-scope": {
       "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+      "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "esrecurse": "^4.3.0",
@@ -6204,6 +7894,8 @@
     },
     "node_modules/esrecurse": {
       "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "estraverse": "^5.2.0"
@@ -6214,6 +7906,8 @@
     },
     "node_modules/esrecurse/node_modules/estraverse": {
       "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
       "license": "BSD-2-Clause",
       "engines": {
         "node": ">=4.0"
@@ -6221,6 +7915,8 @@
     },
     "node_modules/estraverse": {
       "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
       "license": "BSD-2-Clause",
       "engines": {
         "node": ">=4.0"
@@ -6295,9 +7991,9 @@
       }
     },
     "node_modules/estree-util-value-to-estree": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.3.3.tgz",
-      "integrity": "sha512-Db+m1WSD4+mUO7UgMeKkAwdbfNWwIxLt48XF2oFU9emPfXkIu+k5/nlOj313v7wqtAPo0f9REhUvznFrPkG8CQ==",
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.4.0.tgz",
+      "integrity": "sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==",
       "license": "MIT",
       "dependencies": {
         "@types/estree": "^1.0.0"
@@ -6340,6 +8036,8 @@
     },
     "node_modules/eta": {
       "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/eta/-/eta-2.2.0.tgz",
+      "integrity": "sha512-UVQ72Rqjy/ZKQalzV5dCCJP80GrmPrMxh6NlNf+erV6ObL0ZFkhCstWRawS85z3smdr3d2wXPsZEY7rDPfGd2g==",
       "license": "MIT",
       "engines": {
         "node": ">=6.0.0"
@@ -6350,6 +8048,8 @@
     },
     "node_modules/etag": {
       "version": "1.8.1",
+      "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -6357,6 +8057,8 @@
     },
     "node_modules/eval": {
       "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz",
+      "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==",
       "dependencies": {
         "@types/node": "*",
         "require-like": ">= 0.1.1"
@@ -6367,17 +8069,32 @@
     },
     "node_modules/eventemitter3": {
       "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
       "license": "MIT"
     },
     "node_modules/events": {
       "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
       "license": "MIT",
       "engines": {
         "node": ">=0.8.x"
       }
     },
+    "node_modules/eventsource-parser": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz",
+      "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18.0.0"
+      }
+    },
     "node_modules/execa": {
       "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
       "license": "MIT",
       "dependencies": {
         "cross-spawn": "^7.0.3",
@@ -6445,6 +8162,8 @@
     },
     "node_modules/express/node_modules/content-disposition": {
       "version": "0.5.4",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
       "license": "MIT",
       "dependencies": {
         "safe-buffer": "5.2.1"
@@ -6455,6 +8174,8 @@
     },
     "node_modules/express/node_modules/debug": {
       "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
       "license": "MIT",
       "dependencies": {
         "ms": "2.0.0"
@@ -6462,6 +8183,8 @@
     },
     "node_modules/express/node_modules/ms": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
     "node_modules/express/node_modules/path-to-regexp": {
@@ -6472,6 +8195,8 @@
     },
     "node_modules/express/node_modules/range-parser": {
       "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -6479,6 +8204,8 @@
     },
     "node_modules/extend": {
       "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
       "license": "MIT"
     },
     "node_modules/extend-shallow": {
@@ -6495,17 +8222,21 @@
     },
     "node_modules/fast-deep-equal": {
       "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
       "license": "MIT"
     },
     "node_modules/fast-glob": {
-      "version": "3.3.2",
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+      "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
       "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
         "glob-parent": "^5.1.2",
         "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
+        "micromatch": "^4.0.8"
       },
       "engines": {
         "node": ">=8.6.0"
@@ -6513,14 +8244,30 @@
     },
     "node_modules/fast-json-stable-stringify": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
       "license": "MIT"
     },
     "node_modules/fast-uri": {
-      "version": "3.0.1",
-      "license": "MIT"
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+      "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fastify"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/fastify"
+        }
+      ],
+      "license": "BSD-3-Clause"
     },
     "node_modules/fastq": {
-      "version": "1.17.1",
+      "version": "1.19.1",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+      "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
       "license": "ISC",
       "dependencies": {
         "reusify": "^1.0.4"
@@ -6541,6 +8288,8 @@
     },
     "node_modules/faye-websocket": {
       "version": "0.11.4",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
+      "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
       "license": "Apache-2.0",
       "dependencies": {
         "websocket-driver": ">=0.5.1"
@@ -6654,15 +8403,10 @@
         "url": "https://opencollective.com/webpack"
       }
     },
-    "node_modules/filesize": {
-      "version": "8.0.7",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">= 0.4.0"
-      }
-    },
     "node_modules/fill-range": {
       "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
       "license": "MIT",
       "dependencies": {
         "to-regex-range": "^5.0.1"
@@ -6673,6 +8417,8 @@
     },
     "node_modules/finalhandler": {
       "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+      "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
       "license": "MIT",
       "dependencies": {
         "debug": "2.6.9",
@@ -6689,6 +8435,8 @@
     },
     "node_modules/finalhandler/node_modules/debug": {
       "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
       "license": "MIT",
       "dependencies": {
         "ms": "2.0.0"
@@ -6696,6 +8444,8 @@
     },
     "node_modules/finalhandler/node_modules/ms": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
     "node_modules/find-cache-dir": {
@@ -6740,7 +8490,9 @@
       }
     },
     "node_modules/follow-redirects": {
-      "version": "1.15.9",
+      "version": "1.15.11",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+      "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
       "funding": [
         {
           "type": "individual",
@@ -6757,120 +8509,10 @@
         }
       }
     },
-    "node_modules/fork-ts-checker-webpack-plugin": {
-      "version": "6.5.3",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.8.3",
-        "@types/json-schema": "^7.0.5",
-        "chalk": "^4.1.0",
-        "chokidar": "^3.4.2",
-        "cosmiconfig": "^6.0.0",
-        "deepmerge": "^4.2.2",
-        "fs-extra": "^9.0.0",
-        "glob": "^7.1.6",
-        "memfs": "^3.1.2",
-        "minimatch": "^3.0.4",
-        "schema-utils": "2.7.0",
-        "semver": "^7.3.2",
-        "tapable": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=10",
-        "yarn": ">=1.0.0"
-      },
-      "peerDependencies": {
-        "eslint": ">= 6",
-        "typescript": ">= 2.7",
-        "vue-template-compiler": "*",
-        "webpack": ">= 4"
-      },
-      "peerDependenciesMeta": {
-        "eslint": {
-          "optional": true
-        },
-        "vue-template-compiler": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": {
-      "version": "6.12.6",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": {
-      "version": "3.5.2",
-      "license": "MIT",
-      "peerDependencies": {
-        "ajv": "^6.9.1"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": {
-      "version": "6.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "@types/parse-json": "^4.0.0",
-        "import-fresh": "^3.1.0",
-        "parse-json": "^5.0.0",
-        "path-type": "^4.0.0",
-        "yaml": "^1.7.2"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": {
-      "version": "9.1.0",
-      "license": "MIT",
-      "dependencies": {
-        "at-least-node": "^1.0.0",
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": {
-      "version": "0.4.1",
-      "license": "MIT"
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
-      "version": "2.7.0",
-      "license": "MIT",
-      "dependencies": {
-        "@types/json-schema": "^7.0.4",
-        "ajv": "^6.12.2",
-        "ajv-keywords": "^3.4.1"
-      },
-      "engines": {
-        "node": ">= 8.9.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/webpack"
-      }
-    },
-    "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": {
-      "version": "1.1.3",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/form-data-encoder": {
       "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+      "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
       "license": "MIT",
       "engines": {
         "node": ">= 14.17"
@@ -6886,6 +8528,8 @@
     },
     "node_modules/forwarded": {
       "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -6906,6 +8550,8 @@
     },
     "node_modules/fresh": {
       "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -6923,16 +8569,24 @@
         "node": ">=14.14"
       }
     },
-    "node_modules/fs-monkey": {
-      "version": "1.0.6",
-      "license": "Unlicense"
-    },
-    "node_modules/fs.realpath": {
-      "version": "1.0.0",
-      "license": "ISC"
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
     },
     "node_modules/function-bind": {
       "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
       "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -6958,10 +8612,14 @@
     },
     "node_modules/gauge/node_modules/emoji-regex": {
       "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
       "license": "MIT"
     },
     "node_modules/gauge/node_modules/string-width": {
       "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
       "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
@@ -6982,14 +8640,21 @@
       }
     },
     "node_modules/get-intrinsic": {
-      "version": "1.2.4",
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+      "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
       "license": "MIT",
       "dependencies": {
+        "call-bind-apply-helpers": "^1.0.2",
+        "es-define-property": "^1.0.1",
         "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.1.1",
         "function-bind": "^1.1.2",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3",
-        "hasown": "^2.0.0"
+        "get-proto": "^1.0.1",
+        "gopd": "^1.2.0",
+        "has-symbols": "^1.1.0",
+        "hasown": "^2.0.2",
+        "math-intrinsics": "^1.1.0"
       },
       "engines": {
         "node": ">= 0.4"
@@ -7004,8 +8669,23 @@
       "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
       "license": "ISC"
     },
+    "node_modules/get-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+      "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+      "license": "MIT",
+      "dependencies": {
+        "dunder-proto": "^1.0.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/get-stream": {
       "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -7020,26 +8700,10 @@
       "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==",
       "license": "ISC"
     },
-    "node_modules/glob": {
-      "version": "7.2.3",
-      "license": "ISC",
-      "dependencies": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      },
-      "engines": {
-        "node": "*"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
     "node_modules/glob-parent": {
       "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
       "license": "ISC",
       "dependencies": {
         "is-glob": "^4.0.1"
@@ -7048,12 +8712,32 @@
         "node": ">= 6"
       }
     },
+    "node_modules/glob-to-regex.js": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz",
+      "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
     "node_modules/glob-to-regexp": {
       "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+      "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
       "license": "BSD-2-Clause"
     },
     "node_modules/global-dirs": {
       "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+      "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
       "license": "MIT",
       "dependencies": {
         "ini": "2.0.0"
@@ -7067,54 +8751,17 @@
     },
     "node_modules/global-dirs/node_modules/ini": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+      "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
       "license": "ISC",
       "engines": {
         "node": ">=10"
       }
     },
-    "node_modules/global-modules": {
-      "version": "2.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "global-prefix": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/global-prefix": {
-      "version": "3.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "ini": "^1.3.5",
-        "kind-of": "^6.0.2",
-        "which": "^1.3.1"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/global-prefix/node_modules/which": {
-      "version": "1.3.1",
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
-      }
-    },
-    "node_modules/globals": {
-      "version": "11.12.0",
-      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
-      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/globby": {
       "version": "11.1.0",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+      "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
       "license": "MIT",
       "dependencies": {
         "array-union": "^2.1.0",
@@ -7132,10 +8779,12 @@
       }
     },
     "node_modules/gopd": {
-      "version": "1.0.1",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
       "license": "MIT",
-      "dependencies": {
-        "get-intrinsic": "^1.1.3"
+      "engines": {
+        "node": ">= 0.4"
       },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -7143,6 +8792,8 @@
     },
     "node_modules/got": {
       "version": "12.6.1",
+      "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz",
+      "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==",
       "license": "MIT",
       "dependencies": {
         "@sindresorhus/is": "^5.2.0",
@@ -7166,6 +8817,8 @@
     },
     "node_modules/got/node_modules/@sindresorhus/is": {
       "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
+      "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
       "license": "MIT",
       "engines": {
         "node": ">=14.16"
@@ -7176,6 +8829,8 @@
     },
     "node_modules/graceful-fs": {
       "version": "4.2.11",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+      "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
       "license": "ISC"
     },
     "node_modules/gray-matter": {
@@ -7217,6 +8872,8 @@
     },
     "node_modules/gzip-size": {
       "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+      "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
       "license": "MIT",
       "dependencies": {
         "duplexer": "^0.1.2"
@@ -7230,10 +8887,14 @@
     },
     "node_modules/handle-thing": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
       "license": "MIT"
     },
     "node_modules/has-flag": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -7241,6 +8902,8 @@
     },
     "node_modules/has-property-descriptors": {
       "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
       "license": "MIT",
       "dependencies": {
         "es-define-property": "^1.0.0"
@@ -7249,18 +8912,10 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/has-proto": {
-      "version": "1.0.3",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.4"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/ljharb"
-      }
-    },
     "node_modules/has-symbols": {
-      "version": "1.0.3",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -7271,10 +8926,14 @@
     },
     "node_modules/has-unicode": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+      "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
       "license": "ISC"
     },
     "node_modules/has-yarn": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz",
+      "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==",
       "license": "MIT",
       "engines": {
         "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -7285,6 +8944,8 @@
     },
     "node_modules/hasown": {
       "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
       "license": "MIT",
       "dependencies": {
         "function-bind": "^1.1.2"
@@ -7295,6 +8956,8 @@
     },
     "node_modules/hast-util-from-parse5": {
       "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz",
+      "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==",
       "license": "MIT",
       "dependencies": {
         "@types/parse5": "^5.0.0",
@@ -7311,10 +8974,14 @@
     },
     "node_modules/hast-util-from-parse5/node_modules/@types/unist": {
       "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
       "license": "MIT"
     },
     "node_modules/hast-util-from-parse5/node_modules/unist-util-stringify-position": {
       "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+      "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.2"
@@ -7326,6 +8993,8 @@
     },
     "node_modules/hast-util-from-parse5/node_modules/vfile": {
       "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
+      "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -7340,6 +9009,8 @@
     },
     "node_modules/hast-util-from-parse5/node_modules/vfile-message": {
       "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+      "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -7352,6 +9023,8 @@
     },
     "node_modules/hast-util-has-property": {
       "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-1.0.4.tgz",
+      "integrity": "sha512-ghHup2voGfgFoHMGnaLHOjbYFACKrRh9KFttdCzMCbFoBMJXiNi2+XTrPP8+q6cDJM/RSqlCfVWrjp1H201rZg==",
       "license": "MIT",
       "funding": {
         "type": "opencollective",
@@ -7360,6 +9033,8 @@
     },
     "node_modules/hast-util-is-element": {
       "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz",
+      "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==",
       "license": "MIT",
       "funding": {
         "type": "opencollective",
@@ -7368,6 +9043,8 @@
     },
     "node_modules/hast-util-parse-selector": {
       "version": "2.2.5",
+      "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz",
+      "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==",
       "license": "MIT",
       "funding": {
         "type": "opencollective",
@@ -7375,9 +9052,9 @@
       }
     },
     "node_modules/hast-util-raw": {
-      "version": "9.0.4",
-      "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz",
-      "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==",
+      "version": "9.1.0",
+      "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
+      "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
       "license": "MIT",
       "dependencies": {
         "@types/hast": "^3.0.0",
@@ -7410,16 +9087,16 @@
       }
     },
     "node_modules/hast-util-raw/node_modules/hast-util-from-parse5": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz",
-      "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==",
+      "version": "8.0.3",
+      "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
+      "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==",
       "license": "MIT",
       "dependencies": {
         "@types/hast": "^3.0.0",
         "@types/unist": "^3.0.0",
         "devlop": "^1.0.0",
-        "hastscript": "^8.0.0",
-        "property-information": "^6.0.0",
+        "hastscript": "^9.0.0",
+        "property-information": "^7.0.0",
         "vfile": "^6.0.0",
         "vfile-location": "^5.0.0",
         "web-namespaces": "^2.0.0"
@@ -7443,15 +9120,15 @@
       }
     },
     "node_modules/hast-util-raw/node_modules/hastscript": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz",
-      "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==",
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz",
+      "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==",
       "license": "MIT",
       "dependencies": {
         "@types/hast": "^3.0.0",
         "comma-separated-tokens": "^2.0.0",
         "hast-util-parse-selector": "^4.0.0",
-        "property-information": "^6.0.0",
+        "property-information": "^7.0.0",
         "space-separated-tokens": "^2.0.0"
       },
       "funding": {
@@ -7460,9 +9137,9 @@
       }
     },
     "node_modules/hast-util-raw/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+      "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -7539,10 +9216,14 @@
     },
     "node_modules/hast-util-select/node_modules/@types/unist": {
       "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
       "license": "MIT"
     },
     "node_modules/hast-util-select/node_modules/unist-util-visit": {
       "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
+      "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -7556,6 +9237,8 @@
     },
     "node_modules/hast-util-select/node_modules/unist-util-visit-parents": {
       "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
+      "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -7567,9 +9250,9 @@
       }
     },
     "node_modules/hast-util-to-estree": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz",
-      "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz",
+      "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==",
       "license": "MIT",
       "dependencies": {
         "@types/estree": "^1.0.0",
@@ -7583,9 +9266,9 @@
         "mdast-util-mdx-expression": "^2.0.0",
         "mdast-util-mdx-jsx": "^3.0.0",
         "mdast-util-mdxjs-esm": "^2.0.0",
-        "property-information": "^6.0.0",
+        "property-information": "^7.0.0",
         "space-separated-tokens": "^2.0.0",
-        "style-to-object": "^0.4.0",
+        "style-to-js": "^1.0.0",
         "unist-util-position": "^5.0.0",
         "zwitch": "^2.0.0"
       },
@@ -7617,16 +9300,10 @@
         "url": "https://opencollective.com/unified"
       }
     },
-    "node_modules/hast-util-to-estree/node_modules/inline-style-parser": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
-      "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==",
-      "license": "MIT"
-    },
     "node_modules/hast-util-to-estree/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+      "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -7643,15 +9320,6 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
-    "node_modules/hast-util-to-estree/node_modules/style-to-object": {
-      "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
-      "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
-      "license": "MIT",
-      "dependencies": {
-        "inline-style-parser": "0.1.1"
-      }
-    },
     "node_modules/hast-util-to-estree/node_modules/zwitch": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
@@ -7663,9 +9331,9 @@
       }
     },
     "node_modules/hast-util-to-jsx-runtime": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz",
-      "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==",
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz",
+      "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==",
       "license": "MIT",
       "dependencies": {
         "@types/estree": "^1.0.0",
@@ -7678,9 +9346,9 @@
         "mdast-util-mdx-expression": "^2.0.0",
         "mdast-util-mdx-jsx": "^3.0.0",
         "mdast-util-mdxjs-esm": "^2.0.0",
-        "property-information": "^6.0.0",
+        "property-information": "^7.0.0",
         "space-separated-tokens": "^2.0.0",
-        "style-to-object": "^1.0.0",
+        "style-to-js": "^1.0.0",
         "unist-util-position": "^5.0.0",
         "vfile-message": "^4.0.0"
       },
@@ -7713,9 +9381,9 @@
       }
     },
     "node_modules/hast-util-to-jsx-runtime/node_modules/property-information": {
-      "version": "6.5.0",
-      "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
-      "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+      "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -7803,6 +9471,8 @@
     },
     "node_modules/hast-util-to-string": {
       "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-1.0.4.tgz",
+      "integrity": "sha512-eK0MxRX47AV2eZ+Lyr18DCpQgodvaS3fAQO2+b9Two9F5HEoRPhiUMNzoXArMJfZi2yieFzUBMRl3HNJ3Jus3w==",
       "license": "MIT",
       "funding": {
         "type": "opencollective",
@@ -7824,6 +9494,8 @@
     },
     "node_modules/hast-util-whitespace": {
       "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz",
+      "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==",
       "license": "MIT",
       "funding": {
         "type": "opencollective",
@@ -7832,6 +9504,8 @@
     },
     "node_modules/hastscript": {
       "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz",
+      "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==",
       "license": "MIT",
       "dependencies": {
         "@types/hast": "^2.0.0",
@@ -7847,6 +9521,8 @@
     },
     "node_modules/hastscript/node_modules/@types/hast": {
       "version": "2.3.10",
+      "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
+      "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2"
@@ -7854,10 +9530,14 @@
     },
     "node_modules/hastscript/node_modules/@types/unist": {
       "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
       "license": "MIT"
     },
     "node_modules/he": {
       "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
       "license": "MIT",
       "bin": {
         "he": "bin/he"
@@ -7865,6 +9545,8 @@
     },
     "node_modules/history": {
       "version": "4.10.1",
+      "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+      "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
       "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.1.2",
@@ -7877,6 +9559,8 @@
     },
     "node_modules/hogan.js": {
       "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz",
+      "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==",
       "dependencies": {
         "mkdirp": "0.3.0",
         "nopt": "1.0.10"
@@ -7887,6 +9571,8 @@
     },
     "node_modules/hoist-non-react-statics": {
       "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+      "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
       "license": "BSD-3-Clause",
       "dependencies": {
         "react-is": "^16.7.0"
@@ -7894,6 +9580,8 @@
     },
     "node_modules/hpack.js": {
       "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+      "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
       "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.1",
@@ -7904,6 +9592,8 @@
     },
     "node_modules/hpack.js/node_modules/readable-stream": {
       "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
       "license": "MIT",
       "dependencies": {
         "core-util-is": "~1.0.0",
@@ -7917,31 +9607,23 @@
     },
     "node_modules/hpack.js/node_modules/safe-buffer": {
       "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
       "license": "MIT"
     },
     "node_modules/hpack.js/node_modules/string_decoder": {
       "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
       "license": "MIT",
       "dependencies": {
         "safe-buffer": "~5.1.0"
       }
     },
-    "node_modules/html-entities": {
-      "version": "2.5.2",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/mdevils"
-        },
-        {
-          "type": "patreon",
-          "url": "https://patreon.com/mdevils"
-        }
-      ],
-      "license": "MIT"
-    },
     "node_modules/html-escaper": {
       "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+      "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
       "license": "MIT"
     },
     "node_modules/html-minifier-terser": {
@@ -7976,6 +9658,8 @@
     },
     "node_modules/html-tags": {
       "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+      "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -8026,6 +9710,8 @@
     },
     "node_modules/html-webpack-plugin/node_modules/commander": {
       "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
+      "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==",
       "license": "MIT",
       "engines": {
         "node": ">= 12"
@@ -8033,6 +9719,8 @@
     },
     "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": {
       "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz",
+      "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==",
       "license": "MIT",
       "dependencies": {
         "camel-case": "^4.1.2",
@@ -8075,10 +9763,14 @@
     },
     "node_modules/http-deceiver": {
       "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+      "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
       "license": "MIT"
     },
     "node_modules/http-errors": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
       "license": "MIT",
       "dependencies": {
         "depd": "2.0.0",
@@ -8092,11 +9784,15 @@
       }
     },
     "node_modules/http-parser-js": {
-      "version": "0.5.8",
+      "version": "0.5.10",
+      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz",
+      "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==",
       "license": "MIT"
     },
     "node_modules/http-proxy": {
       "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
       "license": "MIT",
       "dependencies": {
         "eventemitter3": "^4.0.0",
@@ -8133,6 +9829,8 @@
     },
     "node_modules/http-proxy-middleware/node_modules/is-plain-obj": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -8143,6 +9841,8 @@
     },
     "node_modules/http2-wrapper": {
       "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
+      "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
       "license": "MIT",
       "dependencies": {
         "quick-lru": "^5.1.1",
@@ -8154,13 +9854,26 @@
     },
     "node_modules/human-signals": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+      "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
       "license": "Apache-2.0",
       "engines": {
         "node": ">=10.17.0"
       }
     },
+    "node_modules/hyperdyperid": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz",
+      "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.18"
+      }
+    },
     "node_modules/iconv-lite": {
       "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
       "license": "MIT",
       "dependencies": {
         "safer-buffer": ">= 2.1.2 < 3"
@@ -8183,19 +9896,18 @@
     },
     "node_modules/ignore": {
       "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
       "license": "MIT",
       "engines": {
         "node": ">= 4"
       }
     },
     "node_modules/image-size": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz",
-      "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz",
+      "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==",
       "license": "MIT",
-      "dependencies": {
-        "queue": "6.0.2"
-      },
       "bin": {
         "image-size": "bin/image-size.js"
       },
@@ -8205,18 +9917,14 @@
     },
     "node_modules/immediate": {
       "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz",
+      "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==",
       "license": "MIT"
     },
-    "node_modules/immer": {
-      "version": "9.0.21",
-      "license": "MIT",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/immer"
-      }
-    },
     "node_modules/import-fresh": {
-      "version": "3.3.0",
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+      "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
       "license": "MIT",
       "dependencies": {
         "parent-module": "^1.0.0",
@@ -8231,6 +9939,8 @@
     },
     "node_modules/import-lazy": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+      "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -8238,6 +9948,8 @@
     },
     "node_modules/imurmurhash": {
       "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
       "license": "MIT",
       "engines": {
         "node": ">=0.8.19"
@@ -8245,6 +9957,8 @@
     },
     "node_modules/indent-string": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+      "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -8259,20 +9973,16 @@
         "node": ">=12"
       }
     },
-    "node_modules/inflight": {
-      "version": "1.0.6",
-      "license": "ISC",
-      "dependencies": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
     "node_modules/inherits": {
       "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
       "license": "ISC"
     },
     "node_modules/ini": {
       "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
       "license": "ISC"
     },
     "node_modules/inline-style-parser": {
@@ -8281,15 +9991,10 @@
       "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==",
       "license": "MIT"
     },
-    "node_modules/interpret": {
-      "version": "1.4.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
     "node_modules/invariant": {
       "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
       "license": "MIT",
       "dependencies": {
         "loose-envify": "^1.0.0"
@@ -8297,6 +10002,8 @@
     },
     "node_modules/ipaddr.js": {
       "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz",
+      "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==",
       "license": "MIT",
       "engines": {
         "node": ">= 10"
@@ -8328,10 +10035,14 @@
     },
     "node_modules/is-arrayish": {
       "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
       "license": "MIT"
     },
     "node_modules/is-binary-path": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
       "license": "MIT",
       "dependencies": {
         "binary-extensions": "^2.0.0"
@@ -8342,6 +10053,8 @@
     },
     "node_modules/is-buffer": {
       "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+      "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
       "funding": [
         {
           "type": "github",
@@ -8363,6 +10076,8 @@
     },
     "node_modules/is-ci": {
       "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
+      "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==",
       "license": "MIT",
       "dependencies": {
         "ci-info": "^3.2.0"
@@ -8372,7 +10087,9 @@
       }
     },
     "node_modules/is-core-module": {
-      "version": "2.15.1",
+      "version": "2.16.1",
+      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+      "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
       "license": "MIT",
       "dependencies": {
         "hasown": "^2.0.2"
@@ -8396,6 +10113,8 @@
     },
     "node_modules/is-docker": {
       "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
       "license": "MIT",
       "bin": {
         "is-docker": "cli.js"
@@ -8418,6 +10137,8 @@
     },
     "node_modules/is-extglob": {
       "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -8425,6 +10146,8 @@
     },
     "node_modules/is-fullwidth-code-point": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -8432,6 +10155,8 @@
     },
     "node_modules/is-glob": {
       "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
       "license": "MIT",
       "dependencies": {
         "is-extglob": "^2.1.1"
@@ -8450,8 +10175,43 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
+    "node_modules/is-inside-container": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+      "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+      "license": "MIT",
+      "dependencies": {
+        "is-docker": "^3.0.0"
+      },
+      "bin": {
+        "is-inside-container": "cli.js"
+      },
+      "engines": {
+        "node": ">=14.16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-inside-container/node_modules/is-docker": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+      "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+      "license": "MIT",
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/is-installed-globally": {
       "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz",
+      "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==",
       "license": "MIT",
       "dependencies": {
         "global-dirs": "^3.0.0",
@@ -8464,8 +10224,22 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/is-network-error": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz",
+      "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/is-npm": {
       "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz",
+      "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==",
       "license": "MIT",
       "engines": {
         "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -8476,6 +10250,8 @@
     },
     "node_modules/is-number": {
       "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
       "license": "MIT",
       "engines": {
         "node": ">=0.12.0"
@@ -8490,15 +10266,10 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/is-path-cwd": {
-      "version": "2.2.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/is-path-inside": {
       "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -8537,15 +10308,10 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/is-root": {
-      "version": "2.1.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/is-stream": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -8556,10 +10322,14 @@
     },
     "node_modules/is-typedarray": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
       "license": "MIT"
     },
     "node_modules/is-wsl": {
       "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
       "license": "MIT",
       "dependencies": {
         "is-docker": "^2.0.0"
@@ -8570,6 +10340,8 @@
     },
     "node_modules/is-yarn-global": {
       "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz",
+      "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==",
       "license": "MIT",
       "engines": {
         "node": ">=12"
@@ -8577,10 +10349,14 @@
     },
     "node_modules/isarray": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
       "license": "MIT"
     },
     "node_modules/isexe": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
       "license": "ISC"
     },
     "node_modules/isobject": {
@@ -8640,9 +10416,9 @@
       }
     },
     "node_modules/jiti": {
-      "version": "1.21.6",
-      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
-      "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
+      "version": "1.21.7",
+      "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
+      "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
       "license": "MIT",
       "bin": {
         "jiti": "bin/jiti.js"
@@ -8663,6 +10439,8 @@
     },
     "node_modules/js-tokens": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
       "license": "MIT"
     },
     "node_modules/js-yaml": {
@@ -8678,9 +10456,9 @@
       }
     },
     "node_modules/jsesc": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
-      "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+      "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
       "license": "MIT",
       "bin": {
         "jsesc": "bin/jsesc"
@@ -8691,14 +10469,26 @@
     },
     "node_modules/json-buffer": {
       "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
       "license": "MIT"
     },
     "node_modules/json-parse-even-better-errors": {
       "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
       "license": "MIT"
     },
+    "node_modules/json-schema": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+      "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+      "license": "(AFL-2.1 OR BSD-3-Clause)"
+    },
     "node_modules/json-schema-traverse": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+      "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
       "license": "MIT"
     },
     "node_modules/json5": {
@@ -8715,6 +10505,8 @@
     },
     "node_modules/jsonfile": {
       "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+      "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
       "license": "MIT",
       "dependencies": {
         "universalify": "^2.0.0"
@@ -8725,6 +10517,8 @@
     },
     "node_modules/keyv": {
       "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
       "license": "MIT",
       "dependencies": {
         "json-buffer": "3.0.1"
@@ -8732,6 +10526,8 @@
     },
     "node_modules/kind-of": {
       "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -8739,6 +10535,8 @@
     },
     "node_modules/kleur": {
       "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+      "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -8746,6 +10544,8 @@
     },
     "node_modules/latest-version": {
       "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz",
+      "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==",
       "license": "MIT",
       "dependencies": {
         "package-json": "^8.1.0"
@@ -8758,24 +10558,28 @@
       }
     },
     "node_modules/launch-editor": {
-      "version": "2.9.1",
+      "version": "2.11.1",
+      "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz",
+      "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==",
       "license": "MIT",
       "dependencies": {
-        "picocolors": "^1.0.0",
-        "shell-quote": "^1.8.1"
+        "picocolors": "^1.1.1",
+        "shell-quote": "^1.8.3"
       }
     },
     "node_modules/leven": {
       "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+      "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
       }
     },
     "node_modules/lilconfig": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
-      "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
+      "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
       "license": "MIT",
       "engines": {
         "node": ">=14"
@@ -8786,10 +10590,14 @@
     },
     "node_modules/lines-and-columns": {
       "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
       "license": "MIT"
     },
     "node_modules/loader-runner": {
       "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
+      "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
       "license": "MIT",
       "engines": {
         "node": ">=6.11.5"
@@ -8826,6 +10634,8 @@
     },
     "node_modules/lodash": {
       "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
       "license": "MIT"
     },
     "node_modules/lodash.debounce": {
@@ -8858,6 +10668,8 @@
     },
     "node_modules/loose-envify": {
       "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
       "license": "MIT",
       "dependencies": {
         "js-tokens": "^3.0.0 || ^4.0.0"
@@ -8868,6 +10680,8 @@
     },
     "node_modules/lower-case": {
       "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+      "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
       "license": "MIT",
       "dependencies": {
         "tslib": "^2.0.3"
@@ -8875,6 +10689,8 @@
     },
     "node_modules/lowercase-keys": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+      "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
       "license": "MIT",
       "engines": {
         "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -8898,10 +10714,14 @@
     },
     "node_modules/lunr-languages": {
       "version": "1.14.0",
+      "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz",
+      "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==",
       "license": "MPL-1.1"
     },
     "node_modules/mark.js": {
       "version": "8.11.1",
+      "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
+      "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
       "license": "MIT"
     },
     "node_modules/markdown-extensions": {
@@ -8926,14 +10746,36 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
+    "node_modules/marked": {
+      "version": "16.4.0",
+      "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.0.tgz",
+      "integrity": "sha512-CTPAcRBq57cn3R8n3hwc2REddc28hjR7RzDXQ+lXLmMJYqn20BaI2cGw6QjgZGIgVfp2Wdfw4aMzgNteQ6qJgQ==",
+      "license": "MIT",
+      "bin": {
+        "marked": "bin/marked.js"
+      },
+      "engines": {
+        "node": ">= 20"
+      }
+    },
+    "node_modules/math-intrinsics": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/mdast-util-directive": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz",
-      "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz",
+      "integrity": "sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==",
       "license": "MIT",
       "dependencies": {
         "@types/mdast": "^4.0.0",
         "@types/unist": "^3.0.0",
+        "ccount": "^2.0.0",
         "devlop": "^1.0.0",
         "mdast-util-from-markdown": "^2.0.0",
         "mdast-util-to-markdown": "^2.0.0",
@@ -8947,9 +10789,9 @@
       }
     },
     "node_modules/mdast-util-find-and-replace": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
-      "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
+      "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==",
       "license": "MIT",
       "dependencies": {
         "@types/mdast": "^4.0.0",
@@ -9012,9 +10854,9 @@
       }
     },
     "node_modules/mdast-util-from-markdown/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9058,9 +10900,9 @@
       }
     },
     "node_modules/mdast-util-gfm": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
-      "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz",
+      "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==",
       "license": "MIT",
       "dependencies": {
         "mdast-util-from-markdown": "^2.0.0",
@@ -9094,9 +10936,9 @@
       }
     },
     "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9114,9 +10956,9 @@
       }
     },
     "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9130,9 +10972,9 @@
       "license": "MIT"
     },
     "node_modules/mdast-util-gfm-footnote": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
-      "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz",
+      "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==",
       "license": "MIT",
       "dependencies": {
         "@types/mdast": "^4.0.0",
@@ -9230,9 +11072,9 @@
       }
     },
     "node_modules/mdast-util-mdx-jsx": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz",
-      "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz",
+      "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==",
       "license": "MIT",
       "dependencies": {
         "@types/estree-jsx": "^1.0.0",
@@ -9371,23 +11213,35 @@
     },
     "node_modules/media-typer": {
       "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
       }
     },
     "node_modules/memfs": {
-      "version": "3.5.3",
-      "license": "Unlicense",
+      "version": "4.49.0",
+      "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.49.0.tgz",
+      "integrity": "sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==",
+      "license": "Apache-2.0",
       "dependencies": {
-        "fs-monkey": "^1.0.4"
+        "@jsonjoy.com/json-pack": "^1.11.0",
+        "@jsonjoy.com/util": "^1.9.0",
+        "glob-to-regex.js": "^1.0.1",
+        "thingies": "^2.5.0",
+        "tree-dump": "^1.0.3",
+        "tslib": "^2.0.0"
       },
-      "engines": {
-        "node": ">= 4.0.0"
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
       }
     },
     "node_modules/merge-descriptors": {
       "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+      "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
       "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -9395,10 +11249,14 @@
     },
     "node_modules/merge-stream": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
       "license": "MIT"
     },
     "node_modules/merge2": {
       "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
       "license": "MIT",
       "engines": {
         "node": ">= 8"
@@ -9406,15 +11264,17 @@
     },
     "node_modules/methods": {
       "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
       }
     },
     "node_modules/micromark": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
-      "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
+      "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9447,9 +11307,9 @@
       }
     },
     "node_modules/micromark-core-commonmark": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz",
-      "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz",
+      "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9481,9 +11341,9 @@
       }
     },
     "node_modules/micromark-core-commonmark/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9501,9 +11361,9 @@
       }
     },
     "node_modules/micromark-core-commonmark/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9521,9 +11381,9 @@
       }
     },
     "node_modules/micromark-core-commonmark/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9556,9 +11416,9 @@
       }
     },
     "node_modules/micromark-extension-directive/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9576,9 +11436,9 @@
       }
     },
     "node_modules/micromark-extension-directive/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9596,9 +11456,9 @@
       }
     },
     "node_modules/micromark-extension-directive/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9628,9 +11488,9 @@
       }
     },
     "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9648,9 +11508,9 @@
       }
     },
     "node_modules/micromark-extension-frontmatter/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9700,9 +11560,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9720,9 +11580,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9756,9 +11616,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9776,9 +11636,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9796,9 +11656,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-footnote/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9830,9 +11690,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9846,9 +11706,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-extension-gfm-table": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz",
-      "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz",
+      "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==",
       "license": "MIT",
       "dependencies": {
         "devlop": "^1.0.0",
@@ -9863,9 +11723,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-table/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9883,9 +11743,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9903,9 +11763,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-table/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9949,9 +11809,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9969,9 +11829,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -9989,9 +11849,9 @@
       }
     },
     "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10005,9 +11865,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-extension-mdx-expression": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz",
-      "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz",
+      "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10031,9 +11891,9 @@
       }
     },
     "node_modules/micromark-extension-mdx-expression/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10051,9 +11911,9 @@
       }
     },
     "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10071,9 +11931,9 @@
       }
     },
     "node_modules/micromark-extension-mdx-expression/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10087,12 +11947,11 @@
       "license": "MIT"
     },
     "node_modules/micromark-extension-mdx-jsx": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz",
-      "integrity": "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz",
+      "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==",
       "license": "MIT",
       "dependencies": {
-        "@types/acorn": "^4.0.0",
         "@types/estree": "^1.0.0",
         "devlop": "^1.0.0",
         "estree-util-is-identifier-name": "^3.0.0",
@@ -10110,9 +11969,9 @@
       }
     },
     "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10130,9 +11989,9 @@
       }
     },
     "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10150,9 +12009,9 @@
       }
     },
     "node_modules/micromark-extension-mdx-jsx/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10220,9 +12079,9 @@
       }
     },
     "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10240,9 +12099,9 @@
       }
     },
     "node_modules/micromark-extension-mdxjs-esm/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10256,9 +12115,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-factory-destination": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz",
-      "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+      "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10277,9 +12136,9 @@
       }
     },
     "node_modules/micromark-factory-destination/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10297,9 +12156,9 @@
       }
     },
     "node_modules/micromark-factory-destination/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10313,9 +12172,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-factory-label": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz",
-      "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+      "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10335,9 +12194,9 @@
       }
     },
     "node_modules/micromark-factory-label/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10355,9 +12214,9 @@
       }
     },
     "node_modules/micromark-factory-label/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10371,9 +12230,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-factory-mdx-expression": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.2.tgz",
-      "integrity": "sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz",
+      "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10398,9 +12257,9 @@
       }
     },
     "node_modules/micromark-factory-mdx-expression/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10418,9 +12277,9 @@
       }
     },
     "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10438,9 +12297,9 @@
       }
     },
     "node_modules/micromark-factory-mdx-expression/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10490,9 +12349,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-factory-title": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz",
-      "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+      "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10512,9 +12371,9 @@
       }
     },
     "node_modules/micromark-factory-title/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10532,9 +12391,9 @@
       }
     },
     "node_modules/micromark-factory-title/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10552,9 +12411,9 @@
       }
     },
     "node_modules/micromark-factory-title/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10568,9 +12427,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-factory-whitespace": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz",
-      "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+      "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10590,9 +12449,9 @@
       }
     },
     "node_modules/micromark-factory-whitespace/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10610,9 +12469,9 @@
       }
     },
     "node_modules/micromark-factory-whitespace/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10630,9 +12489,9 @@
       }
     },
     "node_modules/micromark-factory-whitespace/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10682,9 +12541,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-chunked": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz",
-      "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+      "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10701,9 +12560,9 @@
       }
     },
     "node_modules/micromark-util-chunked/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10717,9 +12576,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-classify-character": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz",
-      "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+      "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10738,9 +12597,9 @@
       }
     },
     "node_modules/micromark-util-classify-character/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10758,9 +12617,9 @@
       }
     },
     "node_modules/micromark-util-classify-character/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10774,9 +12633,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-combine-extensions": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz",
-      "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+      "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10794,9 +12653,9 @@
       }
     },
     "node_modules/micromark-util-decode-numeric-character-reference": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz",
-      "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+      "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10813,9 +12672,9 @@
       }
     },
     "node_modules/micromark-util-decode-numeric-character-reference/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10829,9 +12688,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-decode-string": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz",
-      "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
+      "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10851,9 +12710,9 @@
       }
     },
     "node_modules/micromark-util-decode-string/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10871,9 +12730,9 @@
       }
     },
     "node_modules/micromark-util-decode-string/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10887,9 +12746,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-encode": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
-      "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+      "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10903,9 +12762,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-events-to-acorn": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz",
-      "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz",
+      "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10918,7 +12777,6 @@
       ],
       "license": "MIT",
       "dependencies": {
-        "@types/acorn": "^4.0.0",
         "@types/estree": "^1.0.0",
         "@types/unist": "^3.0.0",
         "devlop": "^1.0.0",
@@ -10929,9 +12787,9 @@
       }
     },
     "node_modules/micromark-util-events-to-acorn/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10945,9 +12803,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-html-tag-name": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz",
-      "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+      "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10961,9 +12819,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-normalize-identifier": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz",
-      "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+      "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10980,9 +12838,9 @@
       }
     },
     "node_modules/micromark-util-normalize-identifier/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -10996,9 +12854,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-resolve-all": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz",
-      "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+      "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11015,9 +12873,9 @@
       }
     },
     "node_modules/micromark-util-sanitize-uri": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
-      "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+      "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11036,9 +12894,9 @@
       }
     },
     "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11056,9 +12914,9 @@
       }
     },
     "node_modules/micromark-util-sanitize-uri/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11072,9 +12930,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-subtokenize": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz",
-      "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz",
+      "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11094,9 +12952,9 @@
       }
     },
     "node_modules/micromark-util-subtokenize/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11126,9 +12984,9 @@
       "license": "MIT"
     },
     "node_modules/micromark-util-types": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
-      "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
+      "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11142,9 +13000,9 @@
       "license": "MIT"
     },
     "node_modules/micromark/node_modules/micromark-factory-space": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz",
-      "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+      "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11162,9 +13020,9 @@
       }
     },
     "node_modules/micromark/node_modules/micromark-util-character": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11182,9 +13040,9 @@
       }
     },
     "node_modules/micromark/node_modules/micromark-util-symbol": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
       "funding": [
         {
           "type": "GitHub Sponsors",
@@ -11199,6 +13057,8 @@
     },
     "node_modules/micromatch": {
       "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
       "license": "MIT",
       "dependencies": {
         "braces": "^3.0.3",
@@ -11210,6 +13070,8 @@
     },
     "node_modules/mime": {
       "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
       "license": "MIT",
       "bin": {
         "mime": "cli.js"
@@ -11220,6 +13082,8 @@
     },
     "node_modules/mime-db": {
       "version": "1.33.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+      "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -11227,6 +13091,8 @@
     },
     "node_modules/mime-types": {
       "version": "2.1.18",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+      "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
       "license": "MIT",
       "dependencies": {
         "mime-db": "~1.33.0"
@@ -11237,6 +13103,8 @@
     },
     "node_modules/mimic-fn": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -11244,6 +13112,8 @@
     },
     "node_modules/mimic-response": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+      "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
       "license": "MIT",
       "engines": {
         "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -11253,9 +13123,9 @@
       }
     },
     "node_modules/mini-css-extract-plugin": {
-      "version": "2.9.2",
-      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz",
-      "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==",
+      "version": "2.9.4",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.4.tgz",
+      "integrity": "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==",
       "license": "MIT",
       "dependencies": {
         "schema-utils": "^4.0.0",
@@ -11274,10 +13144,14 @@
     },
     "node_modules/minimalistic-assert": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
       "license": "ISC"
     },
     "node_modules/minimatch": {
       "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
       "license": "ISC",
       "dependencies": {
         "brace-expansion": "^1.1.7"
@@ -11288,6 +13162,8 @@
     },
     "node_modules/minimist": {
       "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
       "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -11295,6 +13171,8 @@
     },
     "node_modules/mkdirp": {
       "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
+      "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==",
       "license": "MIT/X11",
       "engines": {
         "node": "*"
@@ -11309,10 +13187,14 @@
     },
     "node_modules/ms": {
       "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
       "license": "MIT"
     },
     "node_modules/multicast-dns": {
       "version": "7.2.5",
+      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz",
+      "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
       "license": "MIT",
       "dependencies": {
         "dns-packet": "^5.2.2",
@@ -11341,7 +13223,9 @@
       }
     },
     "node_modules/negotiator": {
-      "version": "0.6.3",
+      "version": "0.6.4",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+      "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -11349,10 +13233,14 @@
     },
     "node_modules/neo-async": {
       "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
       "license": "MIT"
     },
     "node_modules/no-case": {
       "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+      "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
       "license": "MIT",
       "dependencies": {
         "lower-case": "^2.0.2",
@@ -11360,9 +13248,9 @@
       }
     },
     "node_modules/node-emoji": {
-      "version": "2.1.3",
-      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz",
-      "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz",
+      "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==",
       "license": "MIT",
       "dependencies": {
         "@sindresorhus/is": "^4.6.0",
@@ -11376,17 +13264,23 @@
     },
     "node_modules/node-forge": {
       "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz",
+      "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
       "license": "(BSD-3-Clause OR GPL-2.0)",
       "engines": {
         "node": ">= 6.13.0"
       }
     },
     "node_modules/node-releases": {
-      "version": "2.0.18",
+      "version": "2.0.23",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz",
+      "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==",
       "license": "MIT"
     },
     "node_modules/nopt": {
       "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+      "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
       "license": "MIT",
       "dependencies": {
         "abbrev": "1"
@@ -11397,6 +13291,8 @@
     },
     "node_modules/normalize-path": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -11422,7 +13318,9 @@
       }
     },
     "node_modules/not": {
-      "version": "0.1.0"
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz",
+      "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA=="
     },
     "node_modules/npm-check-updates": {
       "version": "17.1.3",
@@ -11438,6 +13336,8 @@
     },
     "node_modules/npm-run-path": {
       "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
       "license": "MIT",
       "dependencies": {
         "path-key": "^3.0.0"
@@ -11454,6 +13354,8 @@
     },
     "node_modules/nth-check": {
       "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "boolbase": "^1.0.0"
@@ -11533,13 +13435,17 @@
     },
     "node_modules/object-assign": {
       "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
       }
     },
     "node_modules/object-inspect": {
-      "version": "1.13.2",
+      "version": "1.13.4",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+      "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -11558,14 +13464,16 @@
       }
     },
     "node_modules/object.assign": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
-      "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
+      "version": "4.1.7",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+      "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
       "license": "MIT",
       "dependencies": {
-        "call-bind": "^1.0.5",
+        "call-bind": "^1.0.8",
+        "call-bound": "^1.0.3",
         "define-properties": "^1.2.1",
-        "has-symbols": "^1.0.3",
+        "es-object-atoms": "^1.0.0",
+        "has-symbols": "^1.1.0",
         "object-keys": "^1.1.1"
       },
       "engines": {
@@ -11577,10 +13485,14 @@
     },
     "node_modules/obuf": {
       "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
       "license": "MIT"
     },
     "node_modules/on-finished": {
       "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
       "license": "MIT",
       "dependencies": {
         "ee-first": "1.1.1"
@@ -11598,15 +13510,10 @@
         "node": ">= 0.8"
       }
     },
-    "node_modules/once": {
-      "version": "1.4.0",
-      "license": "ISC",
-      "dependencies": {
-        "wrappy": "1"
-      }
-    },
     "node_modules/onetime": {
       "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+      "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
       "license": "MIT",
       "dependencies": {
         "mimic-fn": "^2.1.0"
@@ -11620,6 +13527,8 @@
     },
     "node_modules/open": {
       "version": "8.4.2",
+      "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz",
+      "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
       "license": "MIT",
       "dependencies": {
         "define-lazy-prop": "^2.0.0",
@@ -11635,6 +13544,8 @@
     },
     "node_modules/opener": {
       "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+      "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
       "license": "(WTFPL OR MIT)",
       "bin": {
         "opener": "bin/opener-bin.js"
@@ -11642,11 +13553,22 @@
     },
     "node_modules/p-cancelable": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+      "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
       "license": "MIT",
       "engines": {
         "node": ">=12.20"
       }
     },
+    "node_modules/p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/p-limit": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
@@ -11679,6 +13601,8 @@
     },
     "node_modules/p-map": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
+      "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
       "license": "MIT",
       "dependencies": {
         "aggregate-error": "^3.0.0"
@@ -11690,26 +13614,55 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/p-queue": {
+      "version": "6.6.2",
+      "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz",
+      "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
+      "license": "MIT",
+      "dependencies": {
+        "eventemitter3": "^4.0.4",
+        "p-timeout": "^3.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/p-retry": {
-      "version": "4.6.2",
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz",
+      "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==",
       "license": "MIT",
       "dependencies": {
-        "@types/retry": "0.12.0",
+        "@types/retry": "0.12.2",
+        "is-network-error": "^1.0.0",
         "retry": "^0.13.1"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">=16.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/p-try": {
-      "version": "2.2.0",
+    "node_modules/p-timeout": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
+      "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
       "license": "MIT",
+      "dependencies": {
+        "p-finally": "^1.0.0"
+      },
       "engines": {
-        "node": ">=6"
+        "node": ">=8"
       }
     },
     "node_modules/package-json": {
       "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz",
+      "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==",
       "license": "MIT",
       "dependencies": {
         "got": "^12.1.0",
@@ -11726,6 +13679,8 @@
     },
     "node_modules/param-case": {
       "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+      "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
       "license": "MIT",
       "dependencies": {
         "dot-case": "^3.0.4",
@@ -11734,6 +13689,8 @@
     },
     "node_modules/parent-module": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
       "license": "MIT",
       "dependencies": {
         "callsites": "^3.0.0"
@@ -11743,13 +13700,12 @@
       }
     },
     "node_modules/parse-entities": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
-      "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
+      "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
-        "character-entities": "^2.0.0",
         "character-entities-legacy": "^3.0.0",
         "character-reference-invalid": "^2.0.0",
         "decode-named-character-reference": "^1.0.0",
@@ -11770,6 +13726,8 @@
     },
     "node_modules/parse-json": {
       "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "^7.0.0",
@@ -11791,12 +13749,12 @@
       "license": "ISC"
     },
     "node_modules/parse5": {
-      "version": "7.2.1",
-      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
-      "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+      "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
       "license": "MIT",
       "dependencies": {
-        "entities": "^4.5.0"
+        "entities": "^6.0.0"
       },
       "funding": {
         "url": "https://github.com/inikulin/parse5?sponsor=1"
@@ -11815,8 +13773,22 @@
         "url": "https://github.com/inikulin/parse5?sponsor=1"
       }
     },
+    "node_modules/parse5/node_modules/entities": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+      "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
     "node_modules/parseurl": {
       "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -11824,6 +13796,8 @@
     },
     "node_modules/pascal-case": {
       "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+      "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
       "license": "MIT",
       "dependencies": {
         "no-case": "^3.0.4",
@@ -11839,13 +13813,6 @@
         "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
       }
     },
-    "node_modules/path-is-absolute": {
-      "version": "1.0.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/path-is-inside": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
@@ -11854,6 +13821,8 @@
     },
     "node_modules/path-key": {
       "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -11861,6 +13830,8 @@
     },
     "node_modules/path-parse": {
       "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
       "license": "MIT"
     },
     "node_modules/path-to-regexp": {
@@ -11874,17 +13845,23 @@
     },
     "node_modules/path-type": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
     "node_modules/picocolors": {
-      "version": "1.1.0",
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
       "license": "ISC"
     },
     "node_modules/picomatch": {
       "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
       "license": "MIT",
       "engines": {
         "node": ">=8.6"
@@ -11908,143 +13885,352 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/pkg-up": {
-      "version": "3.1.0",
+    "node_modules/postcss": {
+      "version": "8.5.6",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+      "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
       "license": "MIT",
       "dependencies": {
-        "find-up": "^3.0.0"
+        "nanoid": "^3.3.11",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
       },
       "engines": {
-        "node": ">=8"
+        "node": "^10 || ^12 || >=14"
       }
     },
-    "node_modules/pkg-up/node_modules/find-up": {
-      "version": "3.0.0",
+    "node_modules/postcss-attribute-case-insensitive": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz",
+      "integrity": "sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
       "license": "MIT",
       "dependencies": {
-        "locate-path": "^3.0.0"
+        "postcss-selector-parser": "^7.0.0"
       },
       "engines": {
-        "node": ">=6"
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
       }
     },
-    "node_modules/pkg-up/node_modules/locate-path": {
-      "version": "3.0.0",
+    "node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
       "license": "MIT",
       "dependencies": {
-        "p-locate": "^3.0.0",
-        "path-exists": "^3.0.0"
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
       },
       "engines": {
-        "node": ">=6"
+        "node": ">=4"
       }
     },
-    "node_modules/pkg-up/node_modules/p-limit": {
-      "version": "2.3.0",
+    "node_modules/postcss-calc": {
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz",
+      "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==",
       "license": "MIT",
       "dependencies": {
-        "p-try": "^2.0.0"
+        "postcss-selector-parser": "^6.0.11",
+        "postcss-value-parser": "^4.2.0"
       },
       "engines": {
-        "node": ">=6"
+        "node": "^14 || ^16 || >=18.0"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+      "peerDependencies": {
+        "postcss": "^8.2.2"
       }
     },
-    "node_modules/pkg-up/node_modules/p-locate": {
-      "version": "3.0.0",
+    "node_modules/postcss-clamp": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz",
+      "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==",
       "license": "MIT",
       "dependencies": {
-        "p-limit": "^2.0.0"
+        "postcss-value-parser": "^4.2.0"
       },
       "engines": {
-        "node": ">=6"
+        "node": ">=7.6.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4.6"
       }
     },
-    "node_modules/pkg-up/node_modules/path-exists": {
-      "version": "3.0.0",
+    "node_modules/postcss-color-functional-notation": {
+      "version": "7.0.12",
+      "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.12.tgz",
+      "integrity": "sha512-TLCW9fN5kvO/u38/uesdpbx3e8AkTYhMvDZYa9JpmImWuTE99bDQ7GU7hdOADIZsiI9/zuxfAJxny/khknp1Zw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-color-hex-alpha": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz",
+      "integrity": "sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
       "license": "MIT",
+      "dependencies": {
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
       "engines": {
-        "node": ">=4"
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
       }
     },
-    "node_modules/postcss": {
-      "version": "8.4.47",
-      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
-      "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
+    "node_modules/postcss-color-rebeccapurple": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz",
+      "integrity": "sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==",
       "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
         {
           "type": "opencollective",
-          "url": "https://opencollective.com/postcss/"
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-colormin": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz",
+      "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.23.0",
+        "caniuse-api": "^3.0.0",
+        "colord": "^2.9.3",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": "^14 || ^16 || >=18.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4.31"
+      }
+    },
+    "node_modules/postcss-convert-values": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz",
+      "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==",
+      "license": "MIT",
+      "dependencies": {
+        "browserslist": "^4.23.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": "^14 || ^16 || >=18.0"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4.31"
+      }
+    },
+    "node_modules/postcss-custom-media": {
+      "version": "11.0.6",
+      "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz",
+      "integrity": "sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
         },
         {
-          "type": "tidelift",
-          "url": "https://tidelift.com/funding/github/npm/postcss"
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "@csstools/cascade-layer-name-parser": "^2.0.5",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/media-query-list-parser": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-custom-properties": {
+      "version": "14.0.6",
+      "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz",
+      "integrity": "sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
         },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "@csstools/cascade-layer-name-parser": "^2.0.5",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-custom-selectors": {
+      "version": "8.0.5",
+      "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz",
+      "integrity": "sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg==",
+      "funding": [
         {
           "type": "github",
-          "url": "https://github.com/sponsors/ai"
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
         }
       ],
       "license": "MIT",
       "dependencies": {
-        "nanoid": "^3.3.7",
-        "picocolors": "^1.1.0",
-        "source-map-js": "^1.2.1"
+        "@csstools/cascade-layer-name-parser": "^2.0.5",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "postcss-selector-parser": "^7.0.0"
       },
       "engines": {
-        "node": "^10 || ^12 || >=14"
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
       }
     },
-    "node_modules/postcss-calc": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz",
-      "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==",
+    "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
       "license": "MIT",
       "dependencies": {
-        "postcss-selector-parser": "^6.0.11",
-        "postcss-value-parser": "^4.2.0"
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
       },
       "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.2.2"
+        "node": ">=4"
       }
     },
-    "node_modules/postcss-colormin": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz",
-      "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==",
-      "license": "MIT",
+    "node_modules/postcss-dir-pseudo-class": {
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz",
+      "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
       "dependencies": {
-        "browserslist": "^4.23.0",
-        "caniuse-api": "^3.0.0",
-        "colord": "^2.9.3",
-        "postcss-value-parser": "^4.2.0"
+        "postcss-selector-parser": "^7.0.0"
       },
       "engines": {
-        "node": "^14 || ^16 || >=18.0"
+        "node": ">=18"
       },
       "peerDependencies": {
-        "postcss": "^8.4.31"
+        "postcss": "^8.4"
       }
     },
-    "node_modules/postcss-convert-values": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz",
-      "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==",
+    "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
       "license": "MIT",
       "dependencies": {
-        "browserslist": "^4.23.0",
-        "postcss-value-parser": "^4.2.0"
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
       },
       "engines": {
-        "node": "^14 || ^16 || >=18.0"
-      },
-      "peerDependencies": {
-        "postcss": "^8.4.31"
+        "node": ">=4"
       }
     },
     "node_modules/postcss-discard-comments": {
@@ -12110,6 +14296,195 @@
         "postcss": "^8.4.31"
       }
     },
+    "node_modules/postcss-double-position-gradients": {
+      "version": "6.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.4.tgz",
+      "integrity": "sha512-m6IKmxo7FxSP5nF2l63QbCC3r+bWpFUWmZXZf096WxG0m7Vl1Q1+ruFOhpdDRmKrRS+S3Jtk+TVk/7z0+BVK6g==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-focus-visible": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz",
+      "integrity": "sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-focus-within": {
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz",
+      "integrity": "sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-focus-within/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/postcss-font-variant": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz",
+      "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==",
+      "license": "MIT",
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-gap-properties": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz",
+      "integrity": "sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-image-set-function": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz",
+      "integrity": "sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/utilities": "^2.0.0",
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-lab-function": {
+      "version": "7.0.12",
+      "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.12.tgz",
+      "integrity": "sha512-tUcyRk1ZTPec3OuKFsqtRzW2Go5lehW29XA21lZ65XmzQkz43VY2tyWEC202F7W3mILOjw0voOiuxRGTsN+J9w==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/css-color-parser": "^3.1.0",
+        "@csstools/css-parser-algorithms": "^3.0.5",
+        "@csstools/css-tokenizer": "^3.0.4",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/utilities": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
     "node_modules/postcss-loader": {
       "version": "7.3.4",
       "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz",
@@ -12132,6 +14507,31 @@
         "webpack": "^5.0.0"
       }
     },
+    "node_modules/postcss-logical": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz",
+      "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
     "node_modules/postcss-merge-idents": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz",
@@ -12259,13 +14659,13 @@
       }
     },
     "node_modules/postcss-modules-local-by-default": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
-      "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz",
+      "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==",
       "license": "MIT",
       "dependencies": {
         "icss-utils": "^5.0.0",
-        "postcss-selector-parser": "^6.0.2",
+        "postcss-selector-parser": "^7.0.0",
         "postcss-value-parser": "^4.1.0"
       },
       "engines": {
@@ -12275,13 +14675,26 @@
         "postcss": "^8.1.0"
       }
     },
+    "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/postcss-modules-scope": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
-      "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz",
+      "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==",
       "license": "ISC",
       "dependencies": {
-        "postcss-selector-parser": "^6.0.4"
+        "postcss-selector-parser": "^7.0.0"
       },
       "engines": {
         "node": "^10 || ^12 || >= 14"
@@ -12290,6 +14703,19 @@
         "postcss": "^8.1.0"
       }
     },
+    "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/postcss-modules-values": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
@@ -12299,10 +14725,94 @@
         "icss-utils": "^5.0.0"
       },
       "engines": {
-        "node": "^10 || ^12 || >= 14"
+        "node": "^10 || ^12 || >= 14"
+      },
+      "peerDependencies": {
+        "postcss": "^8.1.0"
+      }
+    },
+    "node_modules/postcss-nesting": {
+      "version": "13.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz",
+      "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/selector-resolve-nested": "^3.1.0",
+        "@csstools/selector-specificity": "^5.0.0",
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz",
+      "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      }
+    },
+    "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz",
+      "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "engines": {
+        "node": ">=18"
       },
       "peerDependencies": {
-        "postcss": "^8.1.0"
+        "postcss-selector-parser": "^7.0.0"
+      }
+    },
+    "node_modules/postcss-nesting/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
       }
     },
     "node_modules/postcss-normalize-charset": {
@@ -12438,6 +14948,28 @@
         "postcss": "^8.4.31"
       }
     },
+    "node_modules/postcss-opacity-percentage": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz",
+      "integrity": "sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==",
+      "funding": [
+        {
+          "type": "kofi",
+          "url": "https://ko-fi.com/mrcgrtz"
+        },
+        {
+          "type": "liberapay",
+          "url": "https://liberapay.com/mrcgrtz"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
     "node_modules/postcss-ordered-values": {
       "version": "6.0.2",
       "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz",
@@ -12454,6 +14986,194 @@
         "postcss": "^8.4.31"
       }
     },
+    "node_modules/postcss-overflow-shorthand": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz",
+      "integrity": "sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-page-break": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz",
+      "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==",
+      "license": "MIT",
+      "peerDependencies": {
+        "postcss": "^8"
+      }
+    },
+    "node_modules/postcss-place": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-10.0.0.tgz",
+      "integrity": "sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-value-parser": "^4.2.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-preset-env": {
+      "version": "10.4.0",
+      "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz",
+      "integrity": "sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "@csstools/postcss-alpha-function": "^1.0.1",
+        "@csstools/postcss-cascade-layers": "^5.0.2",
+        "@csstools/postcss-color-function": "^4.0.12",
+        "@csstools/postcss-color-function-display-p3-linear": "^1.0.1",
+        "@csstools/postcss-color-mix-function": "^3.0.12",
+        "@csstools/postcss-color-mix-variadic-function-arguments": "^1.0.2",
+        "@csstools/postcss-content-alt-text": "^2.0.8",
+        "@csstools/postcss-contrast-color-function": "^2.0.12",
+        "@csstools/postcss-exponential-functions": "^2.0.9",
+        "@csstools/postcss-font-format-keywords": "^4.0.0",
+        "@csstools/postcss-gamut-mapping": "^2.0.11",
+        "@csstools/postcss-gradients-interpolation-method": "^5.0.12",
+        "@csstools/postcss-hwb-function": "^4.0.12",
+        "@csstools/postcss-ic-unit": "^4.0.4",
+        "@csstools/postcss-initial": "^2.0.1",
+        "@csstools/postcss-is-pseudo-class": "^5.0.3",
+        "@csstools/postcss-light-dark-function": "^2.0.11",
+        "@csstools/postcss-logical-float-and-clear": "^3.0.0",
+        "@csstools/postcss-logical-overflow": "^2.0.0",
+        "@csstools/postcss-logical-overscroll-behavior": "^2.0.0",
+        "@csstools/postcss-logical-resize": "^3.0.0",
+        "@csstools/postcss-logical-viewport-units": "^3.0.4",
+        "@csstools/postcss-media-minmax": "^2.0.9",
+        "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.5",
+        "@csstools/postcss-nested-calc": "^4.0.0",
+        "@csstools/postcss-normalize-display-values": "^4.0.0",
+        "@csstools/postcss-oklab-function": "^4.0.12",
+        "@csstools/postcss-progressive-custom-properties": "^4.2.1",
+        "@csstools/postcss-random-function": "^2.0.1",
+        "@csstools/postcss-relative-color-syntax": "^3.0.12",
+        "@csstools/postcss-scope-pseudo-class": "^4.0.1",
+        "@csstools/postcss-sign-functions": "^1.1.4",
+        "@csstools/postcss-stepped-value-functions": "^4.0.9",
+        "@csstools/postcss-text-decoration-shorthand": "^4.0.3",
+        "@csstools/postcss-trigonometric-functions": "^4.0.9",
+        "@csstools/postcss-unset-value": "^4.0.0",
+        "autoprefixer": "^10.4.21",
+        "browserslist": "^4.26.0",
+        "css-blank-pseudo": "^7.0.1",
+        "css-has-pseudo": "^7.0.3",
+        "css-prefers-color-scheme": "^10.0.0",
+        "cssdb": "^8.4.2",
+        "postcss-attribute-case-insensitive": "^7.0.1",
+        "postcss-clamp": "^4.1.0",
+        "postcss-color-functional-notation": "^7.0.12",
+        "postcss-color-hex-alpha": "^10.0.0",
+        "postcss-color-rebeccapurple": "^10.0.0",
+        "postcss-custom-media": "^11.0.6",
+        "postcss-custom-properties": "^14.0.6",
+        "postcss-custom-selectors": "^8.0.5",
+        "postcss-dir-pseudo-class": "^9.0.1",
+        "postcss-double-position-gradients": "^6.0.4",
+        "postcss-focus-visible": "^10.0.1",
+        "postcss-focus-within": "^9.0.1",
+        "postcss-font-variant": "^5.0.0",
+        "postcss-gap-properties": "^6.0.0",
+        "postcss-image-set-function": "^7.0.0",
+        "postcss-lab-function": "^7.0.12",
+        "postcss-logical": "^8.1.0",
+        "postcss-nesting": "^13.0.2",
+        "postcss-opacity-percentage": "^3.0.0",
+        "postcss-overflow-shorthand": "^6.0.0",
+        "postcss-page-break": "^3.0.4",
+        "postcss-place": "^10.0.0",
+        "postcss-pseudo-class-any-link": "^10.0.1",
+        "postcss-replace-overflow-wrap": "^4.0.0",
+        "postcss-selector-not": "^8.0.1"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-pseudo-class-any-link": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz",
+      "integrity": "sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT-0",
+      "dependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/postcss-reduce-idents": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz",
@@ -12500,6 +15220,53 @@
         "postcss": "^8.4.31"
       }
     },
+    "node_modules/postcss-replace-overflow-wrap": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz",
+      "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==",
+      "license": "MIT",
+      "peerDependencies": {
+        "postcss": "^8.0.3"
+      }
+    },
+    "node_modules/postcss-selector-not": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz",
+      "integrity": "sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/csstools"
+        },
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/csstools"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "postcss-selector-parser": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "postcss": "^8.4"
+      }
+    },
+    "node_modules/postcss-selector-not/node_modules/postcss-selector-parser": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
+      "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+      "license": "MIT",
+      "dependencies": {
+        "cssesc": "^3.0.0",
+        "util-deprecate": "^1.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
     "node_modules/postcss-selector-parser": {
       "version": "6.1.2",
       "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
@@ -12579,6 +15346,8 @@
     },
     "node_modules/pretty-error": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
+      "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==",
       "license": "MIT",
       "dependencies": {
         "lodash": "^4.17.20",
@@ -12616,10 +15385,14 @@
     },
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
       "license": "MIT"
     },
     "node_modules/prompts": {
       "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+      "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
       "license": "MIT",
       "dependencies": {
         "kleur": "^3.0.3",
@@ -12631,6 +15404,8 @@
     },
     "node_modules/prop-types": {
       "version": "15.8.1",
+      "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+      "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
       "license": "MIT",
       "dependencies": {
         "loose-envify": "^1.4.0",
@@ -12640,6 +15415,8 @@
     },
     "node_modules/property-information": {
       "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz",
+      "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==",
       "license": "MIT",
       "dependencies": {
         "xtend": "^4.0.0"
@@ -12651,10 +15428,14 @@
     },
     "node_modules/proto-list": {
       "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+      "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
       "license": "ISC"
     },
     "node_modules/proxy-addr": {
       "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
       "license": "MIT",
       "dependencies": {
         "forwarded": "0.2.0",
@@ -12666,6 +15447,8 @@
     },
     "node_modules/proxy-addr/node_modules/ipaddr.js": {
       "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.10"
@@ -12673,6 +15456,8 @@
     },
     "node_modules/pupa": {
       "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz",
+      "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==",
       "license": "MIT",
       "dependencies": {
         "escape-goat": "^4.0.0"
@@ -12686,6 +15471,8 @@
     },
     "node_modules/qs": {
       "version": "6.13.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+      "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
       "license": "BSD-3-Clause",
       "dependencies": {
         "side-channel": "^1.0.6"
@@ -12697,17 +15484,10 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/queue": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
-      "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==",
-      "license": "MIT",
-      "dependencies": {
-        "inherits": "~2.0.3"
-      }
-    },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
       "funding": [
         {
           "type": "github",
@@ -12726,6 +15506,8 @@
     },
     "node_modules/quick-lru": {
       "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+      "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
       "license": "MIT",
       "engines": {
         "node": ">=10"
@@ -12736,6 +15518,8 @@
     },
     "node_modules/randombytes": {
       "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
       "license": "MIT",
       "dependencies": {
         "safe-buffer": "^5.1.0"
@@ -12752,6 +15536,8 @@
     },
     "node_modules/raw-body": {
       "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+      "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
       "license": "MIT",
       "dependencies": {
         "bytes": "3.1.2",
@@ -12765,6 +15551,8 @@
     },
     "node_modules/raw-body/node_modules/bytes": {
       "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -12772,6 +15560,8 @@
     },
     "node_modules/rc": {
       "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
       "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
       "dependencies": {
         "deep-extend": "^0.6.0",
@@ -12785,6 +15575,8 @@
     },
     "node_modules/rc/node_modules/strip-json-comments": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -12792,6 +15584,8 @@
     },
     "node_modules/react": {
       "version": "18.3.1",
+      "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+      "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
       "license": "MIT",
       "dependencies": {
         "loose-envify": "^1.1.0"
@@ -12800,118 +15594,10 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/react-dev-utils": {
-      "version": "12.0.1",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/code-frame": "^7.16.0",
-        "address": "^1.1.2",
-        "browserslist": "^4.18.1",
-        "chalk": "^4.1.2",
-        "cross-spawn": "^7.0.3",
-        "detect-port-alt": "^1.1.6",
-        "escape-string-regexp": "^4.0.0",
-        "filesize": "^8.0.6",
-        "find-up": "^5.0.0",
-        "fork-ts-checker-webpack-plugin": "^6.5.0",
-        "global-modules": "^2.0.0",
-        "globby": "^11.0.4",
-        "gzip-size": "^6.0.0",
-        "immer": "^9.0.7",
-        "is-root": "^2.1.0",
-        "loader-utils": "^3.2.0",
-        "open": "^8.4.0",
-        "pkg-up": "^3.1.0",
-        "prompts": "^2.4.2",
-        "react-error-overlay": "^6.0.11",
-        "recursive-readdir": "^2.2.2",
-        "shell-quote": "^1.7.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "engines": {
-        "node": ">=14"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/find-up": {
-      "version": "5.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/loader-utils": {
-      "version": "3.3.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 12.13.0"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/locate-path": {
-      "version": "6.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "p-locate": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/p-limit": {
-      "version": "3.1.0",
-      "license": "MIT",
-      "dependencies": {
-        "yocto-queue": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/p-locate": {
-      "version": "5.0.0",
-      "license": "MIT",
-      "dependencies": {
-        "p-limit": "^3.0.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/path-exists": {
-      "version": "4.0.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/react-dev-utils/node_modules/yocto-queue": {
-      "version": "0.1.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/react-dom": {
       "version": "18.3.1",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+      "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
       "license": "MIT",
       "dependencies": {
         "loose-envify": "^1.1.0",
@@ -12921,16 +15607,16 @@
         "react": "^18.3.1"
       }
     },
-    "node_modules/react-error-overlay": {
-      "version": "6.0.11",
-      "license": "MIT"
-    },
     "node_modules/react-fast-compare": {
       "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
+      "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==",
       "license": "MIT"
     },
     "node_modules/react-helmet-async": {
       "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz",
+      "integrity": "sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A==",
       "license": "Apache-2.0",
       "dependencies": {
         "@babel/runtime": "^7.12.5",
@@ -12946,23 +15632,27 @@
     },
     "node_modules/react-is": {
       "version": "16.13.1",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+      "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
       "license": "MIT"
     },
     "node_modules/react-json-view-lite": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-1.5.0.tgz",
-      "integrity": "sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==",
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/react-json-view-lite/-/react-json-view-lite-2.5.0.tgz",
+      "integrity": "sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==",
       "license": "MIT",
       "engines": {
-        "node": ">=14"
+        "node": ">=18"
       },
       "peerDependencies": {
-        "react": "^16.13.1 || ^17.0.0 || ^18.0.0"
+        "react": "^18.0.0 || ^19.0.0"
       }
     },
     "node_modules/react-loadable": {
       "name": "@docusaurus/react-loadable",
       "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz",
+      "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==",
       "license": "MIT",
       "dependencies": {
         "@types/react": "*"
@@ -12973,6 +15663,8 @@
     },
     "node_modules/react-loadable-ssr-addon-v5-slorber": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz",
+      "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==",
       "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.10.3"
@@ -12987,6 +15679,8 @@
     },
     "node_modules/react-router": {
       "version": "5.3.4",
+      "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
+      "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==",
       "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.12.13",
@@ -13005,6 +15699,8 @@
     },
     "node_modules/react-router-config": {
       "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz",
+      "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==",
       "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.1.2"
@@ -13016,6 +15712,8 @@
     },
     "node_modules/react-router-dom": {
       "version": "5.3.4",
+      "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz",
+      "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==",
       "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.12.13",
@@ -13032,10 +15730,14 @@
     },
     "node_modules/react-router/node_modules/isarray": {
       "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+      "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
       "license": "MIT"
     },
     "node_modules/react-router/node_modules/path-to-regexp": {
       "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
+      "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==",
       "license": "MIT",
       "dependencies": {
         "isarray": "0.0.1"
@@ -13043,6 +15745,8 @@
     },
     "node_modules/readable-stream": {
       "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
       "license": "MIT",
       "dependencies": {
         "inherits": "^2.0.3",
@@ -13055,6 +15759,8 @@
     },
     "node_modules/readdirp": {
       "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
       "license": "MIT",
       "dependencies": {
         "picomatch": "^2.2.1"
@@ -13063,21 +15769,6 @@
         "node": ">=8.10.0"
       }
     },
-    "node_modules/reading-time": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz",
-      "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==",
-      "license": "MIT"
-    },
-    "node_modules/rechoir": {
-      "version": "0.6.2",
-      "dependencies": {
-        "resolve": "^1.1.6"
-      },
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
     "node_modules/recma-build-jsx": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz",
@@ -13094,9 +15785,9 @@
       }
     },
     "node_modules/recma-jsx": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz",
-      "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz",
+      "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==",
       "license": "MIT",
       "dependencies": {
         "acorn-jsx": "^5.0.0",
@@ -13108,6 +15799,9 @@
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/unified"
+      },
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
       }
     },
     "node_modules/recma-parse": {
@@ -13139,17 +15833,7 @@
       },
       "funding": {
         "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/recursive-readdir": {
-      "version": "2.2.3",
-      "license": "MIT",
-      "dependencies": {
-        "minimatch": "^3.0.5"
-      },
-      "engines": {
-        "node": ">=6.0.0"
+        "url": "https://opencollective.com/unified"
       }
     },
     "node_modules/regenerate": {
@@ -13159,9 +15843,9 @@
       "license": "MIT"
     },
     "node_modules/regenerate-unicode-properties": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz",
-      "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==",
+      "version": "10.2.2",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz",
+      "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==",
       "license": "MIT",
       "dependencies": {
         "regenerate": "^1.4.2"
@@ -13174,27 +15858,18 @@
       "version": "0.14.1",
       "license": "MIT"
     },
-    "node_modules/regenerator-transform": {
-      "version": "0.15.2",
-      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
-      "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
     "node_modules/regexpu-core": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz",
-      "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==",
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
+      "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==",
       "license": "MIT",
       "dependencies": {
         "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.2.0",
+        "regenerate-unicode-properties": "^10.2.2",
         "regjsgen": "^0.8.0",
-        "regjsparser": "^0.11.0",
+        "regjsparser": "^0.13.0",
         "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.1.0"
+        "unicode-match-property-value-ecmascript": "^2.2.1"
       },
       "engines": {
         "node": ">=4"
@@ -13212,6 +15887,8 @@
     },
     "node_modules/registry-url": {
       "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz",
+      "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==",
       "license": "MIT",
       "dependencies": {
         "rc": "1.2.8"
@@ -13230,12 +15907,12 @@
       "license": "MIT"
     },
     "node_modules/regjsparser": {
-      "version": "0.11.2",
-      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.2.tgz",
-      "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==",
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz",
+      "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==",
       "license": "BSD-2-Clause",
       "dependencies": {
-        "jsesc": "~3.0.2"
+        "jsesc": "~3.1.0"
       },
       "bin": {
         "regjsparser": "bin/parser"
@@ -13243,6 +15920,8 @@
     },
     "node_modules/rehype-parse": {
       "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz",
+      "integrity": "sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==",
       "license": "MIT",
       "dependencies": {
         "hast-util-from-parse5": "^6.0.0",
@@ -13255,6 +15934,8 @@
     },
     "node_modules/rehype-parse/node_modules/parse5": {
       "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+      "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
       "license": "MIT"
     },
     "node_modules/rehype-raw": {
@@ -13289,15 +15970,17 @@
     },
     "node_modules/relateurl": {
       "version": "0.2.7",
+      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+      "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.10"
       }
     },
     "node_modules/remark-directive": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz",
-      "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.1.tgz",
+      "integrity": "sha512-gwglrEQEZcZYgVyG1tQuA+h58EZfq5CSULw7J90AFuCTyib1thgHPoqQ+h9iFvU6R+vnZ5oNFQR5QKgGpk741A==",
       "license": "MIT",
       "dependencies": {
         "@types/mdast": "^4.0.0",
@@ -13343,9 +16026,9 @@
       }
     },
     "node_modules/remark-gfm": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
-      "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz",
+      "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==",
       "license": "MIT",
       "dependencies": {
         "@types/mdast": "^4.0.0",
@@ -13361,9 +16044,9 @@
       }
     },
     "node_modules/remark-mdx": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz",
-      "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==",
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz",
+      "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==",
       "license": "MIT",
       "dependencies": {
         "mdast-util-mdx": "^3.0.0",
@@ -13391,9 +16074,9 @@
       }
     },
     "node_modules/remark-rehype": {
-      "version": "11.1.1",
-      "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz",
-      "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==",
+      "version": "11.1.2",
+      "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz",
+      "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==",
       "license": "MIT",
       "dependencies": {
         "@types/hast": "^3.0.0",
@@ -13424,6 +16107,8 @@
     },
     "node_modules/renderkid": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
+      "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==",
       "license": "MIT",
       "dependencies": {
         "css-select": "^4.1.3",
@@ -13435,6 +16120,8 @@
     },
     "node_modules/renderkid/node_modules/css-select": {
       "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+      "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "boolbase": "^1.0.0",
@@ -13449,6 +16136,8 @@
     },
     "node_modules/renderkid/node_modules/dom-serializer": {
       "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+      "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
       "license": "MIT",
       "dependencies": {
         "domelementtype": "^2.0.1",
@@ -13461,6 +16150,8 @@
     },
     "node_modules/renderkid/node_modules/domhandler": {
       "version": "4.3.1",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+      "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "domelementtype": "^2.2.0"
@@ -13474,6 +16165,8 @@
     },
     "node_modules/renderkid/node_modules/domutils": {
       "version": "2.8.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+      "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "dom-serializer": "^1.0.1",
@@ -13486,6 +16179,8 @@
     },
     "node_modules/renderkid/node_modules/entities": {
       "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
       "license": "BSD-2-Clause",
       "funding": {
         "url": "https://github.com/fb55/entities?sponsor=1"
@@ -13493,6 +16188,8 @@
     },
     "node_modules/renderkid/node_modules/htmlparser2": {
       "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+      "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
       "funding": [
         "https://github.com/fb55/htmlparser2?sponsor=1",
         {
@@ -13510,6 +16207,8 @@
     },
     "node_modules/repeat-string": {
       "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10"
@@ -13517,6 +16216,8 @@
     },
     "node_modules/require-from-string": {
       "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+      "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -13524,35 +16225,48 @@
     },
     "node_modules/require-like": {
       "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz",
+      "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==",
       "engines": {
         "node": "*"
       }
     },
     "node_modules/requires-port": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
       "license": "MIT"
     },
     "node_modules/resolve": {
-      "version": "1.22.8",
+      "version": "1.22.10",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+      "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
       "license": "MIT",
       "dependencies": {
-        "is-core-module": "^2.13.0",
+        "is-core-module": "^2.16.0",
         "path-parse": "^1.0.7",
         "supports-preserve-symlinks-flag": "^1.0.0"
       },
       "bin": {
         "resolve": "bin/resolve"
       },
+      "engines": {
+        "node": ">= 0.4"
+      },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
     },
     "node_modules/resolve-alpn": {
       "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
+      "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
       "license": "MIT"
     },
     "node_modules/resolve-from": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
       "license": "MIT",
       "engines": {
         "node": ">=4"
@@ -13560,10 +16274,14 @@
     },
     "node_modules/resolve-pathname": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+      "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==",
       "license": "MIT"
     },
     "node_modules/responselike": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+      "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
       "license": "MIT",
       "dependencies": {
         "lowercase-keys": "^3.0.0"
@@ -13577,36 +16295,23 @@
     },
     "node_modules/retry": {
       "version": "0.13.1",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
+      "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
       "license": "MIT",
       "engines": {
         "node": ">= 4"
       }
     },
     "node_modules/reusify": {
-      "version": "1.0.4",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
       "license": "MIT",
       "engines": {
         "iojs": ">=1.0.0",
         "node": ">=0.10.0"
       }
     },
-    "node_modules/rimraf": {
-      "version": "3.0.2",
-      "license": "ISC",
-      "dependencies": {
-        "glob": "^7.1.3"
-      },
-      "bin": {
-        "rimraf": "bin.js"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/rtl-detect": {
-      "version": "1.1.2",
-      "license": "BSD-3-Clause"
-    },
     "node_modules/rtlcss": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz",
@@ -13625,8 +16330,22 @@
         "node": ">=12.0.0"
       }
     },
+    "node_modules/run-applescript": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+      "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/run-parallel": {
       "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
       "funding": [
         {
           "type": "github",
@@ -13648,6 +16367,8 @@
     },
     "node_modules/safe-buffer": {
       "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
       "funding": [
         {
           "type": "github",
@@ -13666,6 +16387,8 @@
     },
     "node_modules/safer-buffer": {
       "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
       "license": "MIT"
     },
     "node_modules/sax": {
@@ -13676,13 +16399,23 @@
     },
     "node_modules/scheduler": {
       "version": "0.23.2",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+      "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
       "license": "MIT",
       "dependencies": {
         "loose-envify": "^1.1.0"
       }
     },
+    "node_modules/schema-dts": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.5.tgz",
+      "integrity": "sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==",
+      "license": "Apache-2.0"
+    },
     "node_modules/schema-utils": {
-      "version": "4.2.0",
+      "version": "4.3.3",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+      "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
       "license": "MIT",
       "dependencies": {
         "@types/json-schema": "^7.0.9",
@@ -13691,7 +16424,7 @@
         "ajv-keywords": "^5.1.0"
       },
       "engines": {
-        "node": ">= 12.13.0"
+        "node": ">= 10.13.0"
       },
       "funding": {
         "type": "opencollective",
@@ -13699,9 +16432,9 @@
       }
     },
     "node_modules/search-insights": {
-      "version": "2.17.2",
-      "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.2.tgz",
-      "integrity": "sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==",
+      "version": "2.17.3",
+      "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz",
+      "integrity": "sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==",
       "license": "MIT",
       "peer": true
     },
@@ -13720,10 +16453,14 @@
     },
     "node_modules/select-hose": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+      "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
       "license": "MIT"
     },
     "node_modules/selfsigned": {
       "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz",
+      "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==",
       "license": "MIT",
       "dependencies": {
         "@types/node-forge": "^1.3.0",
@@ -13745,6 +16482,8 @@
     },
     "node_modules/semver-diff": {
       "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz",
+      "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==",
       "license": "MIT",
       "dependencies": {
         "semver": "^7.3.5"
@@ -13758,6 +16497,8 @@
     },
     "node_modules/send": {
       "version": "0.19.0",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+      "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
       "license": "MIT",
       "dependencies": {
         "debug": "2.6.9",
@@ -13780,6 +16521,8 @@
     },
     "node_modules/send/node_modules/debug": {
       "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
       "license": "MIT",
       "dependencies": {
         "ms": "2.0.0"
@@ -13787,10 +16530,14 @@
     },
     "node_modules/send/node_modules/debug/node_modules/ms": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
     "node_modules/send/node_modules/encodeurl": {
       "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -13798,6 +16545,8 @@
     },
     "node_modules/send/node_modules/range-parser": {
       "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -13805,6 +16554,8 @@
     },
     "node_modules/serialize-javascript": {
       "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+      "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
       "license": "BSD-3-Clause",
       "dependencies": {
         "randombytes": "^2.1.0"
@@ -13833,6 +16584,8 @@
     },
     "node_modules/serve-index": {
       "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+      "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
       "license": "MIT",
       "dependencies": {
         "accepts": "~1.3.4",
@@ -13849,6 +16602,8 @@
     },
     "node_modules/serve-index/node_modules/debug": {
       "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
       "license": "MIT",
       "dependencies": {
         "ms": "2.0.0"
@@ -13856,6 +16611,8 @@
     },
     "node_modules/serve-index/node_modules/depd": {
       "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+      "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -13863,6 +16620,8 @@
     },
     "node_modules/serve-index/node_modules/http-errors": {
       "version": "1.6.3",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+      "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
       "license": "MIT",
       "dependencies": {
         "depd": "~1.1.2",
@@ -13876,18 +16635,26 @@
     },
     "node_modules/serve-index/node_modules/inherits": {
       "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
       "license": "ISC"
     },
     "node_modules/serve-index/node_modules/ms": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
     "node_modules/serve-index/node_modules/setprototypeof": {
       "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
       "license": "ISC"
     },
     "node_modules/serve-index/node_modules/statuses": {
       "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -13895,6 +16662,8 @@
     },
     "node_modules/serve-static": {
       "version": "1.16.2",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+      "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
       "license": "MIT",
       "dependencies": {
         "encodeurl": "~2.0.0",
@@ -13908,6 +16677,8 @@
     },
     "node_modules/set-function-length": {
       "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
       "license": "MIT",
       "dependencies": {
         "define-data-property": "^1.1.4",
@@ -13923,6 +16694,8 @@
     },
     "node_modules/setprototypeof": {
       "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
       "license": "ISC"
     },
     "node_modules/shallow-clone": {
@@ -13939,10 +16712,14 @@
     },
     "node_modules/shallowequal": {
       "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+      "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
       "license": "MIT"
     },
     "node_modules/shebang-command": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
       "license": "MIT",
       "dependencies": {
         "shebang-regex": "^3.0.0"
@@ -13953,41 +16730,89 @@
     },
     "node_modules/shebang-regex": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
       }
     },
     "node_modules/shell-quote": {
-      "version": "1.8.1",
+      "version": "1.8.3",
+      "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+      "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
       "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/shelljs": {
-      "version": "0.8.5",
-      "license": "BSD-3-Clause",
+    "node_modules/side-channel": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+      "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+      "license": "MIT",
       "dependencies": {
-        "glob": "^7.0.0",
-        "interpret": "^1.0.0",
-        "rechoir": "^0.6.2"
+        "es-errors": "^1.3.0",
+        "object-inspect": "^1.13.3",
+        "side-channel-list": "^1.0.0",
+        "side-channel-map": "^1.0.1",
+        "side-channel-weakmap": "^1.0.2"
       },
-      "bin": {
-        "shjs": "bin/shjs"
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/side-channel-list": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+      "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "object-inspect": "^1.13.3"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/side-channel": {
-      "version": "1.0.6",
+    "node_modules/side-channel-map": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+      "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
       "license": "MIT",
       "dependencies": {
-        "call-bind": "^1.0.7",
+        "call-bound": "^1.0.2",
         "es-errors": "^1.3.0",
-        "get-intrinsic": "^1.2.4",
-        "object-inspect": "^1.13.1"
+        "get-intrinsic": "^1.2.5",
+        "object-inspect": "^1.13.3"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/side-channel-weakmap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+      "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bound": "^1.0.2",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.5",
+        "object-inspect": "^1.13.3",
+        "side-channel-map": "^1.0.1"
       },
       "engines": {
         "node": ">= 0.4"
@@ -13998,10 +16823,14 @@
     },
     "node_modules/signal-exit": {
       "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
       "license": "ISC"
     },
     "node_modules/sirv": {
       "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
+      "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
       "license": "MIT",
       "dependencies": {
         "@polka/url": "^1.0.0-next.24",
@@ -14014,6 +16843,8 @@
     },
     "node_modules/sisteransi": {
       "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+      "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
       "license": "MIT"
     },
     "node_modules/sitemap": {
@@ -14055,6 +16886,8 @@
     },
     "node_modules/slash": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -14072,6 +16905,8 @@
     },
     "node_modules/sockjs": {
       "version": "0.3.24",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz",
+      "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
       "license": "MIT",
       "dependencies": {
         "faye-websocket": "^0.11.3",
@@ -14089,12 +16924,12 @@
       }
     },
     "node_modules/source-map": {
-      "version": "0.7.4",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
-      "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+      "version": "0.7.6",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+      "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
       "license": "BSD-3-Clause",
       "engines": {
-        "node": ">= 8"
+        "node": ">= 12"
       }
     },
     "node_modules/source-map-js": {
@@ -14108,6 +16943,8 @@
     },
     "node_modules/source-map-support": {
       "version": "0.5.21",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+      "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
       "license": "MIT",
       "dependencies": {
         "buffer-from": "^1.0.0",
@@ -14116,6 +16953,8 @@
     },
     "node_modules/source-map-support/node_modules/source-map": {
       "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
       "license": "BSD-3-Clause",
       "engines": {
         "node": ">=0.10.0"
@@ -14123,6 +16962,8 @@
     },
     "node_modules/space-separated-tokens": {
       "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz",
+      "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -14131,6 +16972,8 @@
     },
     "node_modules/spdy": {
       "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
       "license": "MIT",
       "dependencies": {
         "debug": "^4.1.0",
@@ -14145,6 +16988,8 @@
     },
     "node_modules/spdy-transport": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
       "license": "MIT",
       "dependencies": {
         "debug": "^4.1.0",
@@ -14175,19 +17020,23 @@
     },
     "node_modules/statuses": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
       }
     },
     "node_modules/std-env": {
-      "version": "3.8.0",
-      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
-      "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==",
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz",
+      "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==",
       "license": "MIT"
     },
     "node_modules/string_decoder": {
       "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
       "license": "MIT",
       "dependencies": {
         "safe-buffer": "~5.2.0"
@@ -14195,6 +17044,8 @@
     },
     "node_modules/string-width": {
       "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
       "license": "MIT",
       "dependencies": {
         "eastasianwidth": "^0.2.0",
@@ -14210,6 +17061,8 @@
     },
     "node_modules/string-width/node_modules/ansi-regex": {
       "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
       "license": "MIT",
       "engines": {
         "node": ">=12"
@@ -14220,6 +17073,8 @@
     },
     "node_modules/string-width/node_modules/strip-ansi": {
       "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
       "license": "MIT",
       "dependencies": {
         "ansi-regex": "^6.0.1"
@@ -14261,6 +17116,8 @@
     },
     "node_modules/strip-ansi": {
       "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
       "license": "MIT",
       "dependencies": {
         "ansi-regex": "^5.0.1"
@@ -14280,6 +17137,8 @@
     },
     "node_modules/strip-final-newline": {
       "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -14297,10 +17156,19 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/style-to-js": {
+      "version": "1.1.17",
+      "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.17.tgz",
+      "integrity": "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==",
+      "license": "MIT",
+      "dependencies": {
+        "style-to-object": "1.0.9"
+      }
+    },
     "node_modules/style-to-object": {
-      "version": "1.0.8",
-      "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz",
-      "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==",
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz",
+      "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==",
       "license": "MIT",
       "dependencies": {
         "inline-style-parser": "0.2.4"
@@ -14324,6 +17192,8 @@
     },
     "node_modules/supports-color": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
       "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
@@ -14334,6 +17204,8 @@
     },
     "node_modules/supports-preserve-symlinks-flag": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.4"
@@ -14382,6 +17254,19 @@
         "node": ">= 10"
       }
     },
+    "node_modules/swr": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.6.tgz",
+      "integrity": "sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==",
+      "license": "MIT",
+      "dependencies": {
+        "dequal": "^2.0.3",
+        "use-sync-external-store": "^1.4.0"
+      },
+      "peerDependencies": {
+        "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+      }
+    },
     "node_modules/tapable": {
       "version": "2.2.1",
       "license": "MIT",
@@ -14439,6 +17324,8 @@
     },
     "node_modules/terser-webpack-plugin/node_modules/ajv": {
       "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
@@ -14453,6 +17340,8 @@
     },
     "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": {
       "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
       "license": "MIT",
       "peerDependencies": {
         "ajv": "^6.9.1"
@@ -14460,6 +17349,8 @@
     },
     "node_modules/terser-webpack-plugin/node_modules/jest-worker": {
       "version": "27.5.1",
+      "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
+      "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
       "license": "MIT",
       "dependencies": {
         "@types/node": "*",
@@ -14472,6 +17363,8 @@
     },
     "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": {
       "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "license": "MIT"
     },
     "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
@@ -14492,6 +17385,8 @@
     },
     "node_modules/terser-webpack-plugin/node_modules/supports-color": {
       "version": "8.1.1",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+      "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
       "license": "MIT",
       "dependencies": {
         "has-flag": "^4.0.0"
@@ -14505,26 +17400,69 @@
     },
     "node_modules/terser/node_modules/commander": {
       "version": "2.20.3",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
       "license": "MIT"
     },
-    "node_modules/text-table": {
-      "version": "0.2.0",
-      "license": "MIT"
+    "node_modules/thingies": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz",
+      "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "^2"
+      }
+    },
+    "node_modules/throttleit": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz",
+      "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
     },
     "node_modules/thunky": {
       "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
       "license": "MIT"
     },
     "node_modules/tiny-invariant": {
       "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+      "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==",
       "license": "MIT"
     },
     "node_modules/tiny-warning": {
       "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
       "license": "MIT"
     },
+    "node_modules/tinypool": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
+      "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==",
+      "license": "MIT",
+      "engines": {
+        "node": "^18.0.0 || >=20.0.0"
+      }
+    },
     "node_modules/to-regex-range": {
       "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
       "license": "MIT",
       "dependencies": {
         "is-number": "^7.0.0"
@@ -14535,6 +17473,8 @@
     },
     "node_modules/to-vfile": {
       "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-6.1.0.tgz",
+      "integrity": "sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==",
       "license": "MIT",
       "dependencies": {
         "is-buffer": "^2.0.0",
@@ -14547,10 +17487,14 @@
     },
     "node_modules/to-vfile/node_modules/@types/unist": {
       "version": "2.0.11",
+      "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz",
+      "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==",
       "license": "MIT"
     },
     "node_modules/to-vfile/node_modules/unist-util-stringify-position": {
       "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+      "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.2"
@@ -14562,6 +17506,8 @@
     },
     "node_modules/to-vfile/node_modules/vfile": {
       "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
+      "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -14576,6 +17522,8 @@
     },
     "node_modules/to-vfile/node_modules/vfile-message": {
       "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+      "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^2.0.0",
@@ -14588,6 +17536,8 @@
     },
     "node_modules/toidentifier": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
       "license": "MIT",
       "engines": {
         "node": ">=0.6"
@@ -14595,11 +17545,29 @@
     },
     "node_modules/totalist": {
       "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+      "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
       }
     },
+    "node_modules/tree-dump": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz",
+      "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=10.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/streamich"
+      },
+      "peerDependencies": {
+        "tslib": "2"
+      }
+    },
     "node_modules/trim-lines": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
@@ -14626,6 +17594,8 @@
     },
     "node_modules/type-fest": {
       "version": "2.19.0",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+      "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
       "license": "(MIT OR CC0-1.0)",
       "engines": {
         "node": ">=12.20"
@@ -14636,6 +17606,8 @@
     },
     "node_modules/type-is": {
       "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
       "license": "MIT",
       "dependencies": {
         "media-typer": "0.3.0",
@@ -14647,6 +17619,8 @@
     },
     "node_modules/type-is/node_modules/mime-db": {
       "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -14654,6 +17628,8 @@
     },
     "node_modules/type-is/node_modules/mime-types": {
       "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
       "license": "MIT",
       "dependencies": {
         "mime-db": "1.52.0"
@@ -14664,6 +17640,8 @@
     },
     "node_modules/typedarray-to-buffer": {
       "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+      "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
       "license": "MIT",
       "dependencies": {
         "is-typedarray": "^1.0.0"
@@ -14671,6 +17649,9 @@
     },
     "node_modules/typescript": {
       "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz",
+      "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==",
+      "devOptional": true,
       "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
@@ -14716,18 +17697,18 @@
       }
     },
     "node_modules/unicode-match-property-value-ecmascript": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz",
-      "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
+      "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
       "license": "MIT",
       "engines": {
         "node": ">=4"
       }
     },
     "node_modules/unicode-property-aliases-ecmascript": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
-      "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz",
+      "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==",
       "license": "MIT",
       "engines": {
         "node": ">=4"
@@ -14754,6 +17735,8 @@
     },
     "node_modules/unique-string": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+      "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
       "license": "MIT",
       "dependencies": {
         "crypto-random-string": "^4.0.0"
@@ -14767,6 +17750,8 @@
     },
     "node_modules/unist-util-find-after": {
       "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-3.0.0.tgz",
+      "integrity": "sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==",
       "license": "MIT",
       "dependencies": {
         "unist-util-is": "^4.0.0"
@@ -14778,6 +17763,8 @@
     },
     "node_modules/unist-util-is": {
       "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
+      "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
       "license": "MIT",
       "funding": {
         "type": "opencollective",
@@ -14880,6 +17867,8 @@
     },
     "node_modules/universalify": {
       "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+      "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
       "license": "MIT",
       "engines": {
         "node": ">= 10.0.0"
@@ -14887,15 +17876,17 @@
     },
     "node_modules/unpipe": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
       }
     },
     "node_modules/update-browserslist-db": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
-      "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+      "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
       "funding": [
         {
           "type": "opencollective",
@@ -14913,7 +17904,7 @@
       "license": "MIT",
       "dependencies": {
         "escalade": "^3.2.0",
-        "picocolors": "^1.1.0"
+        "picocolors": "^1.1.1"
       },
       "bin": {
         "update-browserslist-db": "cli.js"
@@ -14924,6 +17915,8 @@
     },
     "node_modules/update-notifier": {
       "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz",
+      "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "boxen": "^7.0.0",
@@ -14950,6 +17943,8 @@
     },
     "node_modules/update-notifier/node_modules/boxen": {
       "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz",
+      "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==",
       "license": "MIT",
       "dependencies": {
         "ansi-align": "^3.0.1",
@@ -14970,6 +17965,8 @@
     },
     "node_modules/update-notifier/node_modules/camelcase": {
       "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+      "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
       "license": "MIT",
       "engines": {
         "node": ">=14.16"
@@ -14990,6 +17987,8 @@
     },
     "node_modules/uri-js": {
       "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
       "license": "BSD-2-Clause",
       "dependencies": {
         "punycode": "^2.1.0"
@@ -14997,6 +17996,8 @@
     },
     "node_modules/uri-js/node_modules/punycode": {
       "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -15099,12 +18100,25 @@
         "url": "https://opencollective.com/webpack"
       }
     },
+    "node_modules/use-sync-external-store": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
+      "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
+      "license": "MIT",
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+      }
+    },
     "node_modules/util-deprecate": {
       "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
       "license": "MIT"
     },
     "node_modules/utila": {
       "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+      "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
       "license": "MIT"
     },
     "node_modules/utility-types": {
@@ -15118,6 +18132,8 @@
     },
     "node_modules/utils-merge": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.4.0"
@@ -15125,6 +18141,8 @@
     },
     "node_modules/uuid": {
       "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
       "license": "MIT",
       "bin": {
         "uuid": "dist/bin/uuid"
@@ -15132,10 +18150,14 @@
     },
     "node_modules/value-equal": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+      "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==",
       "license": "MIT"
     },
     "node_modules/vary": {
       "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.8"
@@ -15157,6 +18179,8 @@
     },
     "node_modules/vfile-location": {
       "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz",
+      "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==",
       "license": "MIT",
       "funding": {
         "type": "opencollective",
@@ -15164,9 +18188,9 @@
       }
     },
     "node_modules/vfile-message": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
-      "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
+      "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
       "license": "MIT",
       "dependencies": {
         "@types/unist": "^3.0.0",
@@ -15190,6 +18214,8 @@
     },
     "node_modules/wbuf": {
       "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
       "license": "MIT",
       "dependencies": {
         "minimalistic-assert": "^1.0.0"
@@ -15197,6 +18223,8 @@
     },
     "node_modules/web-namespaces": {
       "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
+      "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==",
       "license": "MIT",
       "funding": {
         "type": "github",
@@ -15251,6 +18279,8 @@
     },
     "node_modules/webpack-bundle-analyzer": {
       "version": "4.10.2",
+      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
+      "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
       "license": "MIT",
       "dependencies": {
         "@discoveryjs/json-ext": "0.5.7",
@@ -15275,44 +18305,58 @@
     },
     "node_modules/webpack-bundle-analyzer/node_modules/commander": {
       "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+      "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
       "license": "MIT",
       "engines": {
         "node": ">= 10"
       }
     },
     "node_modules/webpack-dev-middleware": {
-      "version": "5.3.4",
+      "version": "7.4.5",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz",
+      "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==",
       "license": "MIT",
       "dependencies": {
         "colorette": "^2.0.10",
-        "memfs": "^3.4.3",
-        "mime-types": "^2.1.31",
+        "memfs": "^4.43.1",
+        "mime-types": "^3.0.1",
+        "on-finished": "^2.4.1",
         "range-parser": "^1.2.1",
         "schema-utils": "^4.0.0"
       },
       "engines": {
-        "node": ">= 12.13.0"
+        "node": ">= 18.12.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/webpack"
       },
       "peerDependencies": {
-        "webpack": "^4.0.0 || ^5.0.0"
+        "webpack": "^5.0.0"
+      },
+      "peerDependenciesMeta": {
+        "webpack": {
+          "optional": true
+        }
       }
     },
     "node_modules/webpack-dev-middleware/node_modules/mime-db": {
-      "version": "1.52.0",
+      "version": "1.54.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+      "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
       }
     },
     "node_modules/webpack-dev-middleware/node_modules/mime-types": {
-      "version": "2.1.35",
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
+      "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
       "license": "MIT",
       "dependencies": {
-        "mime-db": "1.52.0"
+        "mime-db": "^1.54.0"
       },
       "engines": {
         "node": ">= 0.6"
@@ -15320,58 +18364,60 @@
     },
     "node_modules/webpack-dev-middleware/node_modules/range-parser": {
       "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
       }
     },
     "node_modules/webpack-dev-server": {
-      "version": "4.15.2",
-      "license": "MIT",
-      "dependencies": {
-        "@types/bonjour": "^3.5.9",
-        "@types/connect-history-api-fallback": "^1.3.5",
-        "@types/express": "^4.17.13",
-        "@types/serve-index": "^1.9.1",
-        "@types/serve-static": "^1.13.10",
-        "@types/sockjs": "^0.3.33",
-        "@types/ws": "^8.5.5",
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz",
+      "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/bonjour": "^3.5.13",
+        "@types/connect-history-api-fallback": "^1.5.4",
+        "@types/express": "^4.17.21",
+        "@types/express-serve-static-core": "^4.17.21",
+        "@types/serve-index": "^1.9.4",
+        "@types/serve-static": "^1.15.5",
+        "@types/sockjs": "^0.3.36",
+        "@types/ws": "^8.5.10",
         "ansi-html-community": "^0.0.8",
-        "bonjour-service": "^1.0.11",
-        "chokidar": "^3.5.3",
+        "bonjour-service": "^1.2.1",
+        "chokidar": "^3.6.0",
         "colorette": "^2.0.10",
         "compression": "^1.7.4",
         "connect-history-api-fallback": "^2.0.0",
-        "default-gateway": "^6.0.3",
-        "express": "^4.17.3",
+        "express": "^4.21.2",
         "graceful-fs": "^4.2.6",
-        "html-entities": "^2.3.2",
-        "http-proxy-middleware": "^2.0.3",
-        "ipaddr.js": "^2.0.1",
-        "launch-editor": "^2.6.0",
-        "open": "^8.0.9",
-        "p-retry": "^4.5.0",
-        "rimraf": "^3.0.2",
-        "schema-utils": "^4.0.0",
-        "selfsigned": "^2.1.1",
+        "http-proxy-middleware": "^2.0.9",
+        "ipaddr.js": "^2.1.0",
+        "launch-editor": "^2.6.1",
+        "open": "^10.0.3",
+        "p-retry": "^6.2.0",
+        "schema-utils": "^4.2.0",
+        "selfsigned": "^2.4.1",
         "serve-index": "^1.9.1",
         "sockjs": "^0.3.24",
         "spdy": "^4.0.2",
-        "webpack-dev-middleware": "^5.3.4",
-        "ws": "^8.13.0"
+        "webpack-dev-middleware": "^7.4.2",
+        "ws": "^8.18.0"
       },
       "bin": {
         "webpack-dev-server": "bin/webpack-dev-server.js"
       },
       "engines": {
-        "node": ">= 12.13.0"
+        "node": ">= 18.12.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/webpack"
       },
       "peerDependencies": {
-        "webpack": "^4.37.0 || ^5.0.0"
+        "webpack": "^5.0.0"
       },
       "peerDependenciesMeta": {
         "webpack": {
@@ -15382,8 +18428,40 @@
         }
       }
     },
+    "node_modules/webpack-dev-server/node_modules/define-lazy-prop": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+      "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/open": {
+      "version": "10.2.0",
+      "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
+      "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+      "license": "MIT",
+      "dependencies": {
+        "default-browser": "^5.2.1",
+        "define-lazy-prop": "^3.0.0",
+        "is-inside-container": "^1.0.0",
+        "wsl-utils": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/webpack-dev-server/node_modules/ws": {
-      "version": "8.18.0",
+      "version": "8.18.3",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+      "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
       "license": "MIT",
       "engines": {
         "node": ">=10.0.0"
@@ -15424,6 +18502,8 @@
     },
     "node_modules/webpack/node_modules/ajv": {
       "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
       "license": "MIT",
       "dependencies": {
         "fast-deep-equal": "^3.1.1",
@@ -15438,6 +18518,8 @@
     },
     "node_modules/webpack/node_modules/ajv-keywords": {
       "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+      "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
       "license": "MIT",
       "peerDependencies": {
         "ajv": "^6.9.1"
@@ -15445,10 +18527,14 @@
     },
     "node_modules/webpack/node_modules/json-schema-traverse": {
       "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "license": "MIT"
     },
     "node_modules/webpack/node_modules/mime-db": {
       "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
       "license": "MIT",
       "engines": {
         "node": ">= 0.6"
@@ -15456,6 +18542,8 @@
     },
     "node_modules/webpack/node_modules/mime-types": {
       "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
       "license": "MIT",
       "dependencies": {
         "mime-db": "1.52.0"
@@ -15554,6 +18642,8 @@
     },
     "node_modules/websocket-driver": {
       "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
+      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
       "license": "Apache-2.0",
       "dependencies": {
         "http-parser-js": ">=0.5.1",
@@ -15566,6 +18656,8 @@
     },
     "node_modules/websocket-extensions": {
       "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
       "license": "Apache-2.0",
       "engines": {
         "node": ">=0.8.0"
@@ -15573,6 +18665,8 @@
     },
     "node_modules/which": {
       "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
       "license": "ISC",
       "dependencies": {
         "isexe": "^2.0.0"
@@ -15586,6 +18680,8 @@
     },
     "node_modules/wide-align": {
       "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+      "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
       "license": "ISC",
       "dependencies": {
         "string-width": "^1.0.2 || 2 || 3 || 4"
@@ -15593,10 +18689,14 @@
     },
     "node_modules/wide-align/node_modules/emoji-regex": {
       "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
       "license": "MIT"
     },
     "node_modules/wide-align/node_modules/string-width": {
       "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
       "license": "MIT",
       "dependencies": {
         "emoji-regex": "^8.0.0",
@@ -15609,6 +18709,8 @@
     },
     "node_modules/widest-line": {
       "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
+      "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
       "license": "MIT",
       "dependencies": {
         "string-width": "^5.0.1"
@@ -15628,6 +18730,8 @@
     },
     "node_modules/wrap-ansi": {
       "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+      "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
       "license": "MIT",
       "dependencies": {
         "ansi-styles": "^6.1.0",
@@ -15643,6 +18747,8 @@
     },
     "node_modules/wrap-ansi/node_modules/ansi-regex": {
       "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+      "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
       "license": "MIT",
       "engines": {
         "node": ">=12"
@@ -15653,6 +18759,8 @@
     },
     "node_modules/wrap-ansi/node_modules/ansi-styles": {
       "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+      "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
       "license": "MIT",
       "engines": {
         "node": ">=12"
@@ -15663,6 +18771,8 @@
     },
     "node_modules/wrap-ansi/node_modules/strip-ansi": {
       "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
       "license": "MIT",
       "dependencies": {
         "ansi-regex": "^6.0.1"
@@ -15674,12 +18784,10 @@
         "url": "https://github.com/chalk/strip-ansi?sponsor=1"
       }
     },
-    "node_modules/wrappy": {
-      "version": "1.0.2",
-      "license": "ISC"
-    },
     "node_modules/write-file-atomic": {
       "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+      "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
       "license": "ISC",
       "dependencies": {
         "imurmurhash": "^0.1.4",
@@ -15690,6 +18798,8 @@
     },
     "node_modules/ws": {
       "version": "7.5.10",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+      "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
       "license": "MIT",
       "engines": {
         "node": ">=8.3.0"
@@ -15707,8 +18817,40 @@
         }
       }
     },
+    "node_modules/wsl-utils": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
+      "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-wsl": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/wsl-utils/node_modules/is-wsl": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+      "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-inside-container": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=16"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/xdg-basedir": {
       "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
+      "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
       "license": "MIT",
       "engines": {
         "node": ">=12"
@@ -15731,6 +18873,8 @@
     },
     "node_modules/xtend": {
       "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
       "license": "MIT",
       "engines": {
         "node": ">=0.4"
@@ -15742,17 +18886,10 @@
       "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
       "license": "ISC"
     },
-    "node_modules/yaml": {
-      "version": "1.10.2",
-      "license": "ISC",
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/yocto-queue": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
-      "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
+      "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
       "license": "MIT",
       "engines": {
         "node": ">=12.20"
@@ -15761,8 +18898,19 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/zod": {
+      "version": "4.1.12",
+      "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
+      "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/colinhacks"
+      }
+    },
     "node_modules/zwitch": {
       "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
+      "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
       "license": "MIT",
       "funding": {
         "type": "github",
diff --git a/website/package.json b/website/package.json
index 5dd9c28..d5bd108 100644
--- a/website/package.json
+++ b/website/package.json
@@ -15,8 +15,8 @@
     "typecheck": "tsc"
   },
   "dependencies": {
-    "@docusaurus/core": "^3.6.1",
-    "@docusaurus/preset-classic": "^3.6.1",
+    "@docusaurus/core": "^3.9.1",
+    "@docusaurus/preset-classic": "^3.9.1",
     "@mdx-js/react": "^3.0.0",
     "clsx": "^2.0.0",
     "docusaurus-lunr-search": "^3.4.0",
@@ -27,9 +27,9 @@
     "react-dom": "^18.0.0"
   },
   "devDependencies": {
-    "@docusaurus/module-type-aliases": "^3.6.1",
-    "@docusaurus/tsconfig": "^3.6.1",
-    "@docusaurus/types": "^3.6.1",
+    "@docusaurus/module-type-aliases": "^3.9.1",
+    "@docusaurus/tsconfig": "^3.9.1",
+    "@docusaurus/types": "^3.9.1",
     "typescript": "~5.2.2"
   },
   "browserslist": {
diff --git a/website/src/components/HomepageFeatures/index.tsx b/website/src/components/HomepageFeatures/index.tsx
index 90de6c6..086e0ae 100644
--- a/website/src/components/HomepageFeatures/index.tsx
+++ b/website/src/components/HomepageFeatures/index.tsx
@@ -18,7 +18,7 @@ const FeatureList: FeatureItem[] = [
     id: "benzene-ring-svgrepo-com",
     fill: "white",
     scale: 0.7,
-    Svg: require("@site/static/img/resources.svg").default,
+    Svg: require("/img/resources.svg").default,
     description: (
       <>
         Create powerful abstractions that encapsulate complex Kubernetes
@@ -29,7 +29,7 @@ const FeatureList: FeatureItem[] = [
   },
   {
     title: "Effortless Orchestration",
-    Svg: require("@site/static/img/qrcode.svg").default,
+    Svg: require("/img/qrcode.svg").default,
     id: "qr-code-svgrepo-com",
     fill: "a2",
     scale: 0.6,
@@ -46,7 +46,7 @@ const FeatureList: FeatureItem[] = [
     scale: 0.6,
     id: "scale-svgrepo-com",
     fill: "white",
-    Svg: require("@site/static/img/expand-arrows.svg").default,
+    Svg: require("/img/expand-arrows.svg").default,
     description: (
       <>
         kro effortlessly scales your resource management from simple deployments
diff --git a/website/src/pages/index.module.css b/website/src/pages/index.module.css
index 5bc2dfd..ff34069 100644
--- a/website/src/pages/index.module.css
+++ b/website/src/pages/index.module.css
@@ -8,7 +8,7 @@
   text-align: center;
   position: relative;
   overflow: hidden;
-  background-image: url('@site/static/img/bg-large.png');
+  background-image: url("/img/bg-large.png");
   height: 420px;
   opacity: 0.1;
 }
@@ -76,26 +76,26 @@
   text-decoration: none;
 }
 
-[data-theme='dark'] .indexCtas a {
+[data-theme="dark"] .indexCtas a {
   background-color: var(--main-color-dark);
   border-color: var(--main-color-dark);
 }
 
-[data-theme='dark'] .indexCtas a:hover {
+[data-theme="dark"] .indexCtas a:hover {
   background-color: #fb8422;
   border-color: #fb8422;
   text-decoration: none;
 }
 
-[data-theme='dark'] .heroA {
+[data-theme="dark"] .heroA {
   background-image: linear-gradient(rgb(54, 54, 54), rgb(27, 27, 29));
 }
 
-[data-theme='dark'] .heroProjectTagline {
+[data-theme="dark"] .heroProjectTagline {
   color: #fff;
 }
 
-[data-theme='dark'] .heroProjectTaglineSubtitle {
+[data-theme="dark"] .heroProjectTaglineSubtitle {
   color: #fff;
 }
 
@@ -151,4 +151,4 @@
   .indexCtasGitHubButton {
     display: none;
   }
-}
\ No newline at end of file
+}
diff --git a/images/architecture-diagrams/KRO-Dev-Interface.png b/website/static/img/architecture/KRO-Dev-Interface.png
similarity index 100%
rename from images/architecture-diagrams/KRO-Dev-Interface.png
rename to website/static/img/architecture/KRO-Dev-Interface.png
diff --git a/images/architecture-diagrams/KRO-Instance.png b/website/static/img/architecture/KRO-Instance.png
similarity index 100%
rename from images/architecture-diagrams/KRO-Instance.png
rename to website/static/img/architecture/KRO-Instance.png
diff --git a/images/architecture-diagrams/KRO-Platform-Team.png b/website/static/img/architecture/KRO-Platform-Team.png
similarity index 100%
rename from images/architecture-diagrams/KRO-Platform-Team.png
rename to website/static/img/architecture/KRO-Platform-Team.png
diff --git a/images/architecture-diagrams/kro-WebStack.png b/website/static/img/architecture/kro-WebStack.png
similarity index 100%
rename from images/architecture-diagrams/kro-WebStack.png
rename to website/static/img/architecture/kro-WebStack.png
diff --git a/website/versioned_docs/version-0.1.0/api/out.md b/website/versioned_docs/version-0.1.0/api/out.md
new file mode 100644
index 0000000..73fb037
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/api/out.md
@@ -0,0 +1,138 @@
+---
+sidebar_label: "ResourceGroup API"
+sidebar_position: 100
+---
+
+# API Reference
+
+## Packages
+
+- [kro.run/v1alpha1](#krorunv1alpha1)
+
+## kro.run/v1alpha1
+
+Package v1alpha1 contains API Schema definitions for the x v1alpha1 API group
+
+### Resource Types
+
+- [ResourceGroup](#resourcegroup)
+- [ResourceGroupList](#resourcegrouplist)
+
+#### Condition
+
+Condition is the common struct used by all CRDs managed by ACK service
+controllers to indicate terminal states of the CR and its backend AWS service
+API resource
+
+_Appears in:_
+
+- [ResourceGroupStatus](#resourcegroupstatus)
+
+| Field                                                                                                                     | Description                                                                                                                                                                                                                                                                                           | Default | Validation        |
+| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ----------------- |
+| `type` _[ConditionType](#conditiontype)_                                                                                  | Type is the type of the Condition                                                                                                                                                                                                                                                                     |         |                   |
+| `status` _[ConditionStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#conditionstatus-v1-core)_ | Status of the condition, one of True, False, Unknown.                                                                                                                                                                                                                                                 |         |                   |
+| `lastTransitionTime` _[Time](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#time-v1-meta)_           | Last time the condition transitioned from one status to another.                                                                                                                                                                                                                                      |         |                   |
+| `reason` _string_                                                                                                         | The reason for the condition's last transition.                                                                                                                                                                                                                                                       |         |                   |
+| `message` _string_                                                                                                        | A human readable message indicating details about the transition.                                                                                                                                                                                                                                     |         |                   |
+| `observedGeneration` _integer_                                                                                            | observedGeneration represents the .metadata.generation that the condition was set based upon.<br />For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date<br />with respect to the current state of the instance. |         | Minimum: 0 <br /> |
+
+#### ConditionType
+
+_Underlying type:_ _string_
+
+_Appears in:_
+
+- [Condition](#condition)
+
+#### Definition
+
+_Appears in:_
+
+- [ResourceGroupSpec](#resourcegroupspec)
+
+| Field                                    | Description | Default | Validation |
+| ---------------------------------------- | ----------- | ------- | ---------- |
+| `spec` _[RawExtension](#rawextension)_   |             |         |            |
+| `status` _[RawExtension](#rawextension)_ |             |         |            |
+| `types` _[RawExtension](#rawextension)_  |             |         |            |
+| `validation` _string array_              |             |         |            |
+
+#### Resource
+
+_Appears in:_
+
+- [ResourceGroupSpec](#resourcegroupspec)
+
+| Field                                        | Description | Default | Validation          |
+| -------------------------------------------- | ----------- | ------- | ------------------- |
+| `name` _string_                              |             |         | Required: {} <br /> |
+| `definition` _[RawExtension](#rawextension)_ |             |         | Required: {} <br /> |
+
+#### ResourceGroup
+
+ResourceGroup is the Schema for the resourcegroups API
+
+_Appears in:_
+
+- [ResourceGroupList](#resourcegrouplist)
+
+| Field                                                                                                             | Description                                                                                                                                                                                                                                                                                                            | Default | Validation |
+| ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------- |
+| `apiVersion` _string_                                                                                             | `kro.run/v1alpha1`                                                                                                                                                                                                                                                                                                     |         |            |
+| `kind` _string_                                                                                                   | `ResourceGroup`                                                                                                                                                                                                                                                                                                        |         |            |
+| `kind` _string_                                                                                                   | Kind is a string value representing the REST resource this object represents.<br />Servers may infer this from the endpoint the client submits requests to.<br />Cannot be updated.<br />In CamelCase.<br />More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |         |            |
+| `apiVersion` _string_                                                                                             | APIVersion defines the versioned schema of this representation of an object.<br />Servers should convert recognized schemas to the latest internal value, and<br />may reject unrecognized values.<br />More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources       |         |            |
+| `metadata` _[ObjectMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#objectmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`.                                                                                                                                                                                                                                                        |         |            |
+| `spec` _[ResourceGroupSpec](#resourcegroupspec)_                                                                  |                                                                                                                                                                                                                                                                                                                        |         |            |
+| `status` _[ResourceGroupStatus](#resourcegroupstatus)_                                                            |                                                                                                                                                                                                                                                                                                                        |         |            |
+
+#### ResourceGroupList
+
+ResourceGroupList contains a list of ResourceGroup
+
+| Field                                                                                                         | Description                                                                                                                                                                                                                                                                                                            | Default | Validation |
+| ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------- |
+| `apiVersion` _string_                                                                                         | `kro.run/v1alpha1`                                                                                                                                                                                                                                                                                                     |         |            |
+| `kind` _string_                                                                                               | `ResourceGroupList`                                                                                                                                                                                                                                                                                                    |         |            |
+| `kind` _string_                                                                                               | Kind is a string value representing the REST resource this object represents.<br />Servers may infer this from the endpoint the client submits requests to.<br />Cannot be updated.<br />In CamelCase.<br />More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |         |            |
+| `apiVersion` _string_                                                                                         | APIVersion defines the versioned schema of this representation of an object.<br />Servers should convert recognized schemas to the latest internal value, and<br />may reject unrecognized values.<br />More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources       |         |            |
+| `metadata` _[ListMeta](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#listmeta-v1-meta)_ | Refer to Kubernetes API documentation for fields of `metadata`.                                                                                                                                                                                                                                                        |         |            |
+| `items` _[ResourceGroup](#resourcegroup) array_                                                               |                                                                                                                                                                                                                                                                                                                        |         |            |
+
+#### ResourceGroupSpec
+
+ResourceGroupSpec defines the desired state of ResourceGroup
+
+_Appears in:_
+
+- [ResourceGroup](#resourcegroup)
+
+| Field                                     | Description | Default | Validation          |
+| ----------------------------------------- | ----------- | ------- | ------------------- |
+| `kind` _string_                           |             |         | Required: {} <br /> |
+| `apiVersion` _string_                     |             |         | Required: {} <br /> |
+| `definition` _[Definition](#definition)_  |             |         | Required: {} <br /> |
+| `resources` _[Resource](#resource) array_ |             |         | Optional: {} <br /> |
+
+#### ResourceGroupState
+
+_Underlying type:_ _string_
+
+_Appears in:_
+
+- [ResourceGroupStatus](#resourcegroupstatus)
+
+#### ResourceGroupStatus
+
+ResourceGroupStatus defines the observed state of ResourceGroup
+
+_Appears in:_
+
+- [ResourceGroup](#resourcegroup)
+
+| Field                                               | Description                                                                 | Default | Validation |
+| --------------------------------------------------- | --------------------------------------------------------------------------- | ------- | ---------- |
+| `state` _[ResourceGroupState](#resourcegroupstate)_ | State is the state of the resourcegroup                                     |         |            |
+| `topologicalOrder` _string array_                   | TopologicalOrder is the topological order of the resourcegroup graph        |         |            |
+| `conditions` _[Condition](#condition) array_        | Conditions represent the latest available observations of an object's state |         |            |
diff --git a/website/versioned_docs/version-0.1.0/docs/concepts/00-resource-groups.md b/website/versioned_docs/version-0.1.0/docs/concepts/00-resource-groups.md
new file mode 100644
index 0000000..ca91acd
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/concepts/00-resource-groups.md
@@ -0,0 +1,167 @@
+---
+sidebar_position: 1
+---
+
+# ResourceGroups
+
+ResourceGroups are the fundamental building blocks in **kro**. They provide a
+way to define, organize, and manage sets of related Kubernetes resources as a
+single, reusable unit.
+
+## What is a ResourceGroup?
+
+A **ResourceGroup** is a custom resource that lets you create new Kubernetes
+APIs for deploying multiple resources together. It acts as a blueprint,
+defining:
+
+- What users can configure (schema)
+- What resources to create (resources)
+- How resources reference each other (dependencies)
+- When resources should be included (conditions)
+- What status to expose (status)
+
+When you create a **ResourceGroup**, kro generates a new API (a.k.a Custom
+Resource Defintion) in your cluster that others can use to deploy resources in a
+consistent, controlled way.
+
+## Anatomy of a ResourceGroup
+
+A ResourceGroup, like any Kubernetes resource, consists of three main parts:
+
+1. **Metadata**: name, namespace, labels, etc.
+2. **Spec**: Defines the structure and properties of the ResourceGroup
+3. **Status**: Reflects the current state of the ResourceGroup
+
+The `spec` section of a ResourceGroup contains two main components:
+
+- **Schema**: Defines what an instance of your API looks like:
+  - What users can configure during creation and update
+  - What status information they can view
+  - Default values and validation rules
+- **Resources**: Specifies the Kubernetes resources to create:
+  - Resource templates
+  - Dependencies between resources
+  - Conditions for inclusion
+  - Readiness criteria
+
+This structure translates to YAML as follows:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: my-resourcegroup # Metadata section
+spec:
+  schema: # Define your API
+    apiVersion: v1alpha1 # API version
+    kind: MyAPI # API kind
+    spec: {} # fields users can configure
+    status: {} # fields kro will populate
+
+  # Define the resources kro will manage
+  resources:
+    - id: resource1
+      # declare your resources along with default values and variables
+      template: {}
+```
+
+Let's look at each component in detail...
+
+## Understanding the Schema
+
+The schema section defines your new API's structure. It determines:
+
+- What fields users can configure when creating instances
+- What status information they can view
+- Type validation and default values
+
+Here's an example schema:
+
+```yaml
+schema:
+  apiVersion: v1alpha1
+  kind: WebApplication # This becomes your new API type
+  spec:
+    # Fields users can configure using a simple, straightforward syntax
+    name: string
+    image: string | default="nginx"
+    replicas: integer | default=3
+    ingress:
+      enabled: boolean | default=false
+
+  status:
+    # Fields kro will populate automatically from your resources
+    # Types are inferred from these CEL expressions
+    availableReplicas: ${deployment.status.availableReplicas}
+    conditions: ${deployment.status.conditions}
+```
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI spec compatible.
+No need to write complex OpenAPI schemas - just define your fields and types in
+a straightforward way. For the complete specification of this format, check out
+the [Simple Schema specification](./10-simple-schema.md). Status fields use CEL
+expressions to reference fields from resources defined in your ResourceGroup.
+kro automatically:
+
+- Infers the correct types from your expressions
+- Validates that referenced resources exist
+- Updates these fields as your resources change
+
+## ResourceGroup Processing
+
+When you create a **ResourceGroup**, kro processes it in several steps to ensure
+correctness and set up the necessary components:
+
+1. **Validation**: kro validates your **ResourceGroup** to ensure it's well
+   formed and follows the correct syntax, maximizing the chances of successful
+   deployment, and catching as many errors as possible early on. It:
+
+   - Validates your schema definition follows the simple schema format
+   - Ensures all resource templates are valid Kubernetes manifests
+   - Checks that referenced values exist and are of the correct type
+   - Confirms resource dependencies form a valid Directed Acycled Graph(DAG)
+     without cycles
+   - Validates all CEL expressions in status fields and conditions
+
+2. **API Generation**: kro generates and registers a new CRD in your cluster
+   based on your schema. For example, if your **ResourceGroup** defines a
+   `WebApplication` API, kro creates a CRD that:
+
+   - Provides API validation based on your schema definition
+   - Automatically applies default values you've defined
+   - Makes status information available to users and other systems
+   - Integrates seamlessly with kubectl and other Kubernetes tools
+
+3. **Controller Configuration**: kro configures itself to watch for instances of
+   your new API and:
+
+   - Creates all required resources following the dependency order
+   - Manages references and value passing between resources
+   - Handles the complete lifecycle for create, update, and delete operations
+   - Keeps status information up to date based on actual resource states
+
+For instance, when you create a `WebApplication` ResourceGroup, kro generates
+the `webapplications.kro.run` CRD. When users create instances of this API, kro
+manages all the underlying resources (Deployments, Services, Custom Resources,
+etc.) automatically.
+
+kro continuously monitors your ResourceGroup for changes, updating the API and
+its behavior accordingly.
+
+## ResourceGroup Instance Example
+
+After the **ResourceGroup** is validated and registered in the cluster, users
+can can create instances of it. Here's an example of how an instance for the
+`SimpleWebApp` might look:
+
+```yaml title="my-web-app-instance.yaml"
+apiVersion: kro.run/v1alpha1
+kind: SimpleWebApp
+metadata:
+  name: my-web-app
+spec:
+  appName: awesome-app
+  image: nginx:latest
+  replicas: 3
+```
diff --git a/website/versioned_docs/version-0.1.0/docs/concepts/10-simple-schema.md b/website/versioned_docs/version-0.1.0/docs/concepts/10-simple-schema.md
new file mode 100644
index 0000000..10ed828
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/concepts/10-simple-schema.md
@@ -0,0 +1,194 @@
+---
+sidebar_position: 2
+---
+
+# Simple Schema
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI specification
+compatible. Here's a comprehensive example:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: web-application
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: WebApplication
+    spec:
+      # Basic types
+      name: string | required=true description="My Name"
+      replicas: integer | default=1 minimum=1 maximum=100
+      image: string | required=true
+
+      # Structured type
+      ingress:
+        enabled: boolean | default=false
+        host: string | default="example.com"
+        path: string | default="/"
+
+      # Array type
+      ports: "[]integer"
+
+      # Map type
+      env: "map[string]string"
+
+    status:
+      # Status fields with auto-inferred types
+      availableReplicas: ${deployment.status.availableReplicas}
+      serviceEndpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Type Definitions
+
+### Basic Types
+
+kro supports these foundational types:
+
+- `string`: Text values
+- `integer`: Whole numbers
+- `boolean`: True/False values
+- `number`: Decimal numbers
+
+For example:
+
+```yaml
+name: string
+age: integer
+enabled: boolean
+price: number
+```
+
+### Structure Types
+
+You can create complex objects by nesting fields. Each field can use any type,
+including other structures:
+
+```yaml
+# Simple structure
+address:
+  street: string
+  city: string
+  zipcode: string
+
+# Nested structures
+user:
+  name: string
+  address: # Nested object
+    street: string
+    city: string
+  contacts: "[]string" # Array of strings
+```
+
+### Array Types
+
+Arrays are denoted using `[]` syntax:
+
+- Basic arrays: `[]string`, `[]integer`, `[]boolean`
+
+Examples:
+
+```yaml
+tags: []string
+ports: []integer
+```
+
+### Map Types
+
+Maps are key-value pairs denoted as `map[keyType]valueType`:
+
+- `map[string]string`: String to string mapping
+- `map[string]integer`: String to integer mapping
+
+Examples:
+
+```yaml
+labels: "map[string]string"
+metrics: "map[string]number"
+```
+
+## Validation and Documentation
+
+Fields can have multiple markers for validation and documentation:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+### Supported Markers
+
+- `required=true`: Field must be provided
+- `default=value`: Default value if not specified
+- `description="..."`: Field documentation
+- `enum="value1,value2"`: Allowed values
+- `minimum=value`: Minimum value for numbers
+- `maximum=value`: Maximum value for numbers
+
+Multiple markers can be combined using the `|` separator.
+
+For example:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+```
+
+## Status Fields
+
+Status fields use CEL expressions to reference values from resources. kro
+automatically:
+
+- Infers the correct types from the expressions
+- Validates that referenced resources exist
+- Updates values when the underlying resources change
+
+```yaml
+status:
+  # Types are inferred from the referenced fields
+  availableReplicas: ${deployment.status.availableReplicas}
+  endpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Default Status Fields
+
+kro automatically injects two fields to every instance's status:
+
+### 1. Conditions
+
+An array of condition objects tracking the instance's state:
+
+```yaml
+status:
+  conditions:
+    - type: string # e.g., "Ready", "Progressing"
+      status: string # "True", "False", "Unknown"
+      lastTransitionTime: string
+      reason: string
+      message: string
+```
+
+Common condition types:
+
+- `Ready`: Instance is fully reconciled
+- `Progressing`: Working towards desired state
+- `Degraded`: Operational but not optimal
+- `Error`: Reconciliation error occurred
+
+### 2. State
+
+A high-level summary of the instance's status:
+
+```yaml
+status:
+  state: string # Ready, Progressing, Degraded, Unknown, Deleting
+```
+
+:::tip
+
+`conditions` and `state` are reserved words. If defined in your schema, kro will
+override them with its own values.
+
+:::
diff --git a/website/versioned_docs/version-0.1.0/docs/concepts/15-instances.md b/website/versioned_docs/version-0.1.0/docs/concepts/15-instances.md
new file mode 100644
index 0000000..2f119b5
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/concepts/15-instances.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 15
+---
+
+# Instances
+
+Once **kro** processes your ResourceGroup, it creates a new API in your cluster.
+Users can then create instances of this API to deploy resources in a consistent,
+controlled way.
+
+## Understanding Instances
+
+An instance represents your deployed application. When you create an instance,
+you're telling kro "I want this set of resources running in my cluster". The
+instance contains your configuration values and serves as the single source of
+truth for your application's desired state. Here's an example instance of our
+WebApplication API:
+
+```yaml
+apiVersion: v1alpha1
+kind: WebApplication
+metadata:
+  name: my-app
+spec:
+  name: web-app
+  image: nginx:latest
+  ingress:
+    enabled: true
+```
+
+When you create this instance, kro:
+
+- Creates all required resources (Deployment, Service, Ingress)
+- Configures them according to your specification
+- Manages them as a single unit
+- Keeps their status up to date
+
+## How kro Manages Instances
+
+kro uses the standard Kubernetes reconciliation pattern to manage instances:
+
+1. **Observe**: Watches for changes to your instance or its resources
+2. **Compare**: Checks if current state matches desired state
+3. **Act**: Creates, updates, or deletes resources as needed
+4. **Report**: Updates status to reflect current state
+
+This continuous loop ensures your resources stay in sync with your desired
+state, providing features like:
+
+- Self-healing
+- Automatic updates
+- Consistent state management
+- Status tracking
+
+## Monitoring Your Instances
+
+KRO provides rich status information for every instance:
+
+```bash
+$ kubectl get webapplication my-app
+NAME     STATUS    SYNCED   AGE
+my-app   ACTIVE    true     30s
+```
+
+For detailed status, check the instance's YAML:
+
+```yaml
+status:
+  state: ACTIVE # High-level instance state
+  availableReplicas: 3 # Status from Deployment
+  conditions: # Detailed status conditions
+    - type: Ready
+      status: "True"
+      lastTransitionTime: "2024-07-23T01:01:59Z"
+      reason: ResourcesAvailable
+      message: "All resources are available and configured correctly"
+```
+
+### Understanding Status
+
+Every instance includes:
+
+1. **State**: High-level status
+
+   - `Running`: All resources are ready
+   - `Progressing`: Working towards desired state
+   - `Failed`: Error occurred
+   - `Terminating`: Being deleted
+
+2. **Conditions**: Detailed status information
+
+   - `Ready`: Instance is fully operational
+   - `Progressing`: Changes are being applied
+   - `Degraded`: Operating but not optimal
+   - `Error`: Problems detected
+
+3. **Resource Status**: Status from your resources
+   - Values you defined in your ResourceGroup's status section
+   - Automatically updated as resources change
+
+## Best Practices
+
+- **Version Control**: Keep your instance definitions in version control
+  alongside your application code. This helps track changes, rollback when
+  needed, and maintain configuration history.
+
+- **Use Labels Effectively**: Add meaningful labels to your instances for better
+  organization, filtering, and integration with other tools. kro propagates
+  labels to the sub resources for easy identification.
+
+- **Active Monitoring**: Regularly check instance status beyond just "Running".
+  Watch conditions, resource status, and events to catch potential issues early
+  and understand your application's health.
+
+- **Regular Reviews**: Periodically review your instance configurations to
+  ensure they reflect current requirements and best practices. Update resource
+  requests, limits, and other configurations as your application needs evolve.
diff --git a/website/versioned_docs/version-0.1.0/docs/concepts/_category_.json b/website/versioned_docs/version-0.1.0/docs/concepts/_category_.json
new file mode 100644
index 0000000..8d8506e
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/concepts/_category_.json
@@ -0,0 +1,9 @@
+{
+  "label": "Concepts",
+  "position": 40,
+  "link": {
+    "description": "Learn about the core concepts of kro"
+  },
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.1.0/docs/faq.md b/website/versioned_docs/version-0.1.0/docs/faq.md
new file mode 100644
index 0000000..414bcd9
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/faq.md
@@ -0,0 +1,76 @@
+---
+sidebar_label: "FAQ"
+sidebar_position: 100
+---
+
+# FAQ
+
+1. **What is kro?**
+
+   Kube Resource Orchestrator (**kro**) is a new operator for Kubernetes that
+   simplifies the creation of complex Kubernetes resource configurations. kro
+   lets you create and manage custom groups of Kubernetes resources by defining
+   them as a _ResourceGroup_, the project's fundamental custom resource.
+   ResourceGroup specifications define a set of resources and how they relate to
+   each other functionally. Once defined, resource groups can be applied to a
+   Kubernetes cluster where the kro controller is running. Once validated by
+   kro, you can create instances of your resource group. kro translates your
+   ResourceGroup instance and its parameters into specific Kubernetes resources
+   and configurations which it then manages for you.
+
+2. **How does kro work?**
+
+   kro is designed to use core Kubernetes primitives to make resource grouping,
+   customization, and dependency management simpler. When a ResourceGroup is
+   applied to the cluster, the kro controller verifies its specification, then
+   dynamically creates a new CRD and registers it with the API server. kro then
+   deploys a dedicated controller to respond to instance events on the CRD. This
+   microcontroller is responsible for managing the lifecycle of resources
+   defined in the ResourceGroup for each instance that is created.
+
+3. **How do I use kro?**
+
+   First, you define your custom resource groups by creating _ResourceGroup_
+   specifications. These specify one or more Kubernetes resources, and can
+   include specific configuration for each resource.
+
+   For example, you can define a _WebApp_ resource group that is composed of a
+   _Deployment_, pre-configured to deploy your web server backend, and a
+   _Service_ configured to run on a specific port. You can just as easily create
+   a more complex _WebAppWithDB_ resource group by combining the existing
+   _WebApp_ resource group with a _Table_ custom resource to provision a cloud
+   managed database instance for your web app to use.
+
+   Once you have defined a ResourceGroup, you can apply it to a Kubernetes
+   cluster where the kro controller is running. kro will take care of the heavy
+   lifting of creating CRDs and deploying dedicated controllers in order to
+   manage instances of your new custom resource group.
+
+   You are now ready to create instances of your new custom resource group, and
+   kro will respond by dynamically creating, configuring, and managing the
+   underlying Kubernetes resources for you.
+
+4. **Why did you build this project?**
+
+   We want to help streamline and simplify building with Kubernetes. Building
+   with Kubernetes means dealing with resources that need to operate and work
+   together, and orchestrating this can get complex and difficult at scale. With
+   this project, we're taking a first step in reducing the complexity of
+   resource dependency management and customization, paving the way for a simple
+   and scalable way to create complex custom resources for Kubernetes.
+
+5. **Do I need to have an AWS account to use this?**
+
+   No, you can use kro with any Kubernetes cluster.
+
+6. **Can I use this in production?**
+
+   This project is in active development and not yet intended for production
+   use. The _ResourceGroup_ CRD and other APIs used in this project are not
+   solidified and highly subject to change.
+
+7. **Will this be built into Amazon Elastic Kubernetes Service (EKS)?**
+
+   This project is a public experiment, and not currently integrated into Amazon
+   EKS. We welcome your feedback and want to hear about what works and what
+   doesn't for your use cases, please let us know what you think.
diff --git a/website/versioned_docs/version-0.1.0/docs/getting-started/01-Installation.md b/website/versioned_docs/version-0.1.0/docs/getting-started/01-Installation.md
new file mode 100644
index 0000000..3e66dff
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/getting-started/01-Installation.md
@@ -0,0 +1,110 @@
+---
+sidebar_position: 1
+---
+
+# Installing kro
+
+This guide walks you through the process of installing kro on your Kubernetes
+cluster using Helm.
+
+## Prerequisites
+
+Before you begin, ensure you have the following:
+
+1. `Helm` 3.x installed
+2. `kubectl` installed and configured to interact with your Kubernetes cluster
+
+## Installation Steps
+
+:::info[**Alpha Stage**]
+
+kro is currently in alpha stage. While the images are publicly available, please
+note that the software is still under active development and APIs may change.
+
+:::
+
+### Install kro using Helm
+
+Once authenticated, install kro using the Helm chart:
+
+Fetch the latest release version from GitHub
+```sh
+export KRO_VERSION=$(curl -sL \
+    https://api.github.com/repos/awslabs/kro/releases/latest | \
+    jq -r '.tag_name | ltrimstr("v")'
+  )
+```
+Validate `KRO_VERSION` populated with a version
+```
+echo $KRO_VERSION
+```
+Install kro using Helm
+```
+helm install kro oci://public.ecr.aws/kro/kro \
+  --namespace kro \
+  --create-namespace \
+  --version=${KRO_VERSION}
+```
+
+## Verifying the Installation
+
+After running the installation command, verify that Kro has been installed
+correctly:
+
+1. Check the Helm release:
+
+   ```sh
+   helm -n kro list
+   ```
+
+   Expected result: You should see the "kro" release listed.
+   ```
+    NAME	NAMESPACE	REVISION	STATUS  
+    kro 	kro      	1       	deployed
+   ```
+
+2. Check the kro pods:
+   ```sh
+   kubectl get pods -n kro
+   ```
+   Expected result: You should see kro-related pods running.
+   ```
+    NAME                        READY   STATUS             RESTARTS   AGE
+    kro-7d98bc6f46-jvjl5        1/1     Running            0           1s 
+   ```
+
+## Upgrading kro
+
+To upgrade to a newer version of kro, use the Helm upgrade command:
+
+Replace `<new-version>` with the version you want to upgrade to.
+```bash
+export KRO_VERSION=<new-version>
+```
+
+Upgrade the controller
+```
+helm upgrade kro oci://public.ecr.aws/kro/kro \
+  --namespace kro \
+  --version=${KRO_VERSION}
+```
+
+:::info[**CRD Updates**]
+
+Helm does not support updating CRDs, so you may need to manually update or
+remove and re-apply kro related CRDs. For more information, refer to the Helm
+documentation.
+
+:::
+
+## Uninstalling kro
+
+To uninstall kro, use the following command:
+
+```bash
+helm uninstall kro -n kro
+```
+
+Keep in mind that this command will remove all kro resources from your cluster,
+except for the ResourceGroup CRD and any other custom resources you may have
+created.
diff --git a/website/versioned_docs/version-0.1.0/docs/getting-started/02-deploy-a-resource-group.md b/website/versioned_docs/version-0.1.0/docs/getting-started/02-deploy-a-resource-group.md
new file mode 100644
index 0000000..93c673a
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/getting-started/02-deploy-a-resource-group.md
@@ -0,0 +1,227 @@
+---
+sidebar_position: 2
+---
+
+# Deploy Your First ResourceGroup
+
+This guide will walk you through creating your first Resource Group in **kro**.
+We'll create a simple `ResourceGroup` that demonstrates key kro features.
+
+## What is a **ResourceGroup**?
+
+A `ResourceGroup` lets you create new Kubernetes APIs that deploy multiple
+resources together as a single, reusable unit. In this example, we’ll create a
+`ResourceGroup` that packages a reusable set of resources, including a
+`Deployment`, `Service`, and `Ingress`. These resources are available in any
+Kubernetes cluster. Users can then call the API to deploy resources as a single
+unit, ensuring they're always created together with the right configuration.
+
+Under the hood, when you create a `ResourceGroup`, kro:
+
+1. Treats your resources as a Directed Acyclic Graph (DAG) to understand their
+   dependencies
+2. Validates resource definitions and detects the correct deployment order
+3. Creates a new API (CRD) in your cluster
+4. Configures itself to watch and serve instances of this API
+
+## Prerequisites
+
+Before you begin, make sure you have the following:
+
+- **kro** [installed](./01-Installation.md) and running in your Kubernetes
+  cluster.
+- `kubectl` installed and configured to interact with your Kubernetes cluster.
+
+## Create your Application ResourceGroup
+
+Let's create a Resource Group that combines a `Deployment`, a `Service` and
+`Ingress`. Save this as `resourcegroup.yaml`:
+
+```yaml title="resourcegroup.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RG (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
+
+### Deploy the ResourceGroup
+
+1. **Create a ResourceGroup manifest file**: Create a new file with the
+   `ResourceGroup` definition. You can use the example above.
+
+2. **Apply the `ResourceGroup`**: Use the `kubectl` command to deploy the
+   ResourceGroup to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f resourcegroup.yaml
+   ```
+
+3. **Inpsect the `ResourceGroup`**: Check the status of the resources created by
+   the ResourceGroup using the `kubectl` command:
+
+   ```bash
+   kubectl get rg my-application -owide
+   ```
+
+   You should see the ResourceGroup in the `Active` state, along with relevant
+   information to help you understand your application:
+
+   ```bash
+   NAME             APIVERSION   KIND          STATE    TOPOLOGICALORDER                     AGE
+   my-application   v1alpha1     Application   Active   ["deployment","service","ingress"]   49
+   ```
+
+### Create your Application Instance
+
+Now that your `ResourceGroup` is created, kro has generated a new API
+(Application) that orchestrates creation of the a `Deployment`, a `Service`, and
+an `Ingress`. Let's use it!
+
+1. **Create an Application instance**: Create a new file named `instance.yaml`
+   with the following content:
+
+   ```yaml title="instance.yaml"
+   apiVersion: kro.run/v1alpha1
+   kind: Application
+   metadata:
+     name: my-application-instance
+   spec:
+     name: my-awesome-app
+     ingress:
+       enabled: true
+   ```
+
+2. **Apply the Application instance**: Use the `kubectl` command to deploy the
+   Application instance to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f instance.yaml
+   ```
+
+3. **Inspect the Application instance**: Check the status of the resources
+
+   ```bash
+   kubectl get applications
+   ```
+
+   After a few seconds, you should see the Application instance in the `Active`
+   state:
+
+   ```bash
+   NAME                      STATE    SYNCED   AGE
+   my-application-instance   ACTIVE   True     10s
+   ```
+
+4. **Inspect the resources**: Check the resources created by the Application
+   instance:
+
+   ```bash
+   kubectl get deployments,services,ingresses
+   ```
+
+   You should see the `Deployment`, `Service`, and `Ingress` created by the
+   Application instance.
+
+   ```bash
+   NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
+   deployment.apps/my-awesome-app   3/3     3            3           69s
+
+   NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
+   service/my-awesome-app-service   ClusterIP   10.100.167.72   <none>        80/TCP    65s
+
+   NAME                                               CLASS    HOSTS   ADDRESS   PORTS   AGE
+   ingress.networking.k8s.io/my-awesome-app-ingress   <none>   *                 80      62s
+   ```
+
+### Delete the Application instance
+
+kro can also help you clean up resources when you're done with them.
+
+1. **Delete the Application instance**: Clean up the resources by deleting the
+   Application instance:
+
+   ```bash
+   kubectl delete application my-application-instance
+   ```
+
+   Now, the resources created by the Application instance will be deleted.
diff --git a/website/versioned_docs/version-0.1.0/docs/getting-started/_category_.json b/website/versioned_docs/version-0.1.0/docs/getting-started/_category_.json
new file mode 100644
index 0000000..723093d
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/getting-started/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Getting started",
+  "position": 20,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.1.0/docs/overview.md b/website/versioned_docs/version-0.1.0/docs/overview.md
new file mode 100644
index 0000000..220d4e0
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/overview.md
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project 
+that allows you to define custom **Kubernetes APIs** using simple and straightforward 
+configuration. With kro, you can easily configure new custom APIs that create a 
+group of Kubernetes objects and the logical operations between them. kro leverages 
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same 
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates 
+the order in which objects should be created. You can define default values for fields 
+in the API specification, streamlining the process for end users who can then 
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGroup
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGroup (RG)**. The **Platform**, **Security**,
+and **Compliance** teams, can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGroup CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RG is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGroup (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGroup Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGroup Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGroup Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/awslabs/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/awslabs/kro/issues). You’re also invited to
+join our
+[community](https://github.com/awslabs/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.1.0/docs/overview.md.bak b/website/versioned_docs/version-0.1.0/docs/overview.md.bak
new file mode 100644
index 0000000..220d4e0
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/docs/overview.md.bak
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project 
+that allows you to define custom **Kubernetes APIs** using simple and straightforward 
+configuration. With kro, you can easily configure new custom APIs that create a 
+group of Kubernetes objects and the logical operations between them. kro leverages 
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same 
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates 
+the order in which objects should be created. You can define default values for fields 
+in the API specification, streamlining the process for end users who can then 
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGroup
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGroup (RG)**. The **Platform**, **Security**,
+and **Compliance** teams, can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGroup CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RG is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGroup (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGroup Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGroup Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGroup Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/awslabs/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/awslabs/kro/issues). You’re also invited to
+join our
+[community](https://github.com/awslabs/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.1.0/examples/ack-eks-cluster.md b/website/versioned_docs/version-0.1.0/examples/ack-eks-cluster.md
new file mode 100644
index 0000000..e3d7d24
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/ack-eks-cluster.md
@@ -0,0 +1,222 @@
+---
+sidebar_position: 10
+---
+
+# EKS Cluster
+
+```yaml title="eks.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: ekscluster.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSCluster
+    spec:
+      name: string
+      version: string
+    status:
+      networkingInfo:
+        vpcID: ${clusterVPC.status.vpcID}
+        subnetAZA: ${clusterSubnetA.status.subnetID}
+        subnetAZB: ${clusterSubnetB.status.subnetID}
+      clusterARN: ${cluster.status.ackResourceMetadata.arn}
+  # resources
+  resources:
+    - id: clusterVPC
+      readyWhen:
+        - ${clusterVPC.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: kro-cluster-vpc
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSSupport: true
+          enableDNSHostnames: true
+    - id: clusterElasticIPAddress
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: ElasticIPAddress
+        metadata:
+          name: kro-cluster-eip
+        spec: {}
+    - id: clusterInternetGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: InternetGateway
+        metadata:
+          name: kro-cluster-igw
+        spec:
+          vpc: ${clusterVPC.status.vpcID}
+    - id: clusterRouteTable
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: RouteTable
+        metadata:
+          name: kro-cluster-public-route-table
+        spec:
+          vpcID: ${clusterVPC.status.vpcID}
+          routes:
+            - destinationCIDRBlock: 0.0.0.0/0
+              gatewayID: ${clusterInternetGateway.status.internetGatewayID}
+    - id: clusterSubnetA
+      readyWhen:
+        - ${clusterSubnetA.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet1
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterSubnetB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet2
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterNATGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: NATGateway
+        metadata:
+          name: kro-cluster-natgateway1
+        spec:
+          subnetID: ${clusterSubnetB.status.subnetID}
+          allocationID: ${clusterElasticIPAddress.status.allocationID}
+    - id: clusterRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-role
+        spec:
+          name: kro-cluster-role
+          description: "kro created cluster cluster role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "eks.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterNodeRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-node-role
+        spec:
+          name: kro-cluster-node-role
+          description: "kro created cluster node role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
+            - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
+            - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "ec2.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterAdminRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-pia-role
+        spec:
+          name: kro-cluster-pia-role
+          description: "kro created cluster admin pia role"
+          policies:
+            - arn:aws:iam::aws:policy/AdministratorAccess
+          assumeRolePolicyDocument: |
+            {
+                "Version": "2012-10-17",
+                "Statement": [
+                    {
+                        "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
+                        "Effect": "Allow",
+                        "Principal": {
+                            "Service": "pods.eks.amazonaws.com"
+                        },
+                        "Action": [
+                            "sts:AssumeRole",
+                            "sts:TagSession"
+                        ]
+                    }
+                ]
+            }
+    - id: cluster
+      readyWhen:
+        - ${cluster.status.status == "ACTIVE"}
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Cluster
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          name: ${schema.spec.name}
+          accessConfig:
+            authenticationMode: API_AND_CONFIG_MAP
+          roleARN: ${clusterRole.status.ackResourceMetadata.arn}
+          version: ${schema.spec.version}
+          resourcesVPCConfig:
+            endpointPrivateAccess: false
+            endpointPublicAccess: true
+            subnetIDs:
+              - ${clusterSubnetA.status.subnetID}
+              - ${clusterSubnetB.status.subnetID}
+    - id: clusterNodeGroup
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Nodegroup
+        metadata:
+          name: kro-cluster-nodegroup
+        spec:
+          name: kro-cluster-ng
+          diskSize: 100
+          clusterName: ${cluster.spec.name}
+          subnets:
+            - ${clusterSubnetA.status.subnetID}
+            - ${clusterSubnetB.status.subnetID}
+          nodeRole: ${clusterNodeRole.status.ackResourceMetadata.arn}
+          updateConfig:
+            maxUnavailable: 1
+          scalingConfig:
+            minSize: 1
+            maxSize: 1
+            desiredSize: 1
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/ack-networking-stack.md b/website/versioned_docs/version-0.1.0/examples/ack-networking-stack.md
new file mode 100644
index 0000000..4270bad
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/ack-networking-stack.md
@@ -0,0 +1,79 @@
+---
+sidebar_position: 10
+---
+
+# Networking Stack
+
+```yaml title="networking-stack.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: networkingstack.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: NetworkingStack
+    spec:
+      name: string
+    status:
+      networkingInfo:
+        vpcID: ${vpc.status.vpcID}
+        subnetAZA: ${subnetAZA.status.subnetID}
+        subnetAZB: ${subnetAZB.status.subnetID}
+        subnetAZC: ${subnetAZC.status.subnetID}
+        securityGroup: ${securityGroup.status.id}
+  # resources
+  resources:
+    - id: vpc
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: vpc-${schema.spec.name}
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSHostnames: false
+          enableDNSSupport: true
+    - id: subnetAZA
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-a-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-b-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZC
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-c-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2c
+          cidrBlock: 192.168.128.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: securityGroup
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: cluster-security-group-${schema.spec.name}
+        spec:
+          vpcID: ${vpc.status.vpcID}
+          name: my-sg-${schema.spec.name}
+          description: something something
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/ack-valkey-cachecluster.md b/website/versioned_docs/version-0.1.0/examples/ack-valkey-cachecluster.md
new file mode 100644
index 0000000..a139e84
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/ack-valkey-cachecluster.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 10
+---
+
+# Valkey cluster
+
+```yaml title="valkey-cachecluster.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: valkey.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: Valkey
+    spec:
+      name: string
+    status:
+      csgARN: ${cacheSubnetGroup.status.ackResourceMetadata.arn}
+      subnets: ${cacheSubnetGroup.status.subnets}
+      clusterARN: ${valkey.status.ackResourceMetadata.arn}
+  resources:
+    - id: networkingStack
+      template:
+        apiVersion: kro.run/v1alpha1
+        kind: NetworkingStack
+        metadata:
+          name: ${schema.spec.name}-networking-stack
+        spec:
+          name: ${schema.spec.name}-networking-stack
+    - id: cacheSubnetGroup
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheSubnetGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-subnet-group
+        spec:
+          cacheSubnetGroupDescription: "Valkey ElastiCache subnet group"
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          subnetIDs:
+            - ${networkingStack.status.networkingInfo.subnetAZA}
+            - ${networkingStack.status.networkingInfo.subnetAZB}
+            - ${networkingStack.status.networkingInfo.subnetAZC}
+    - id: sg
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-sg
+        spec:
+          name: ${schema.spec.name}-valkey-sg
+          description: "Valkey ElastiCache security group"
+          vpcID: ${networkingStack.status.networkingInfo.vpcID}
+          ingressRules:
+            - fromPort: 6379
+              toPort: 6379
+              ipProtocol: tcp
+              ipRanges:
+                - cidrIP: 0.0.0.0/0
+    - id: valkey
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheCluster
+        metadata:
+          name: ${schema.spec.name}-valkey
+        spec:
+          cacheClusterID: vote-valkey-cluster
+          cacheNodeType: cache.t3.micro
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          engine: valkey
+          engineVersion: "8.x"
+          numCacheNodes: 1
+          port: 6379
+          securityGroupIDs:
+            - ${sg.status.id}
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/deploying-controller.md b/website/versioned_docs/version-0.1.0/examples/deploying-controller.md
new file mode 100644
index 0000000..5c38f96
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/deploying-controller.md
@@ -0,0 +1,297 @@
+---
+sidebar_position: 10
+---
+
+# Controller Deployment
+
+```yaml title="controller-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: ekscontrollers.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSController
+    spec:
+      name: string | default=eks-controller
+      namespace: string | default=default
+      values:
+        aws:
+          accountID: string | required=true
+          region: string | default=us-west-2
+        deployment:
+          containerPort: integer | default=8080
+          replicas: integer | default=1
+        iamRole:
+          maxSessionDuration: integer | default=3600
+          oidcProvider: string | required=true
+          roleDescription: string | default=IRSA role for ACK EKS controller deployement on EKS cluster using kro Resource group
+        iamPolicy:
+          # would prefer to add a policyDocument here, need to support multiline string here
+          description: string | default="policy for eks controller"
+        image:
+          deletePolicy: string | default=delete
+          repository: string | default=public.ecr.aws/aws-controllers-k8s/eks-controller
+          tag: string | default=1.4.7
+          resources:
+            requests:
+              memory: string | default=64Mi
+              cpu: string | default=50m
+            limits:
+              memory: string | default=128Mi
+              cpu: string | default=100m
+        log:
+          enabled: boolean | default=false
+          level: string | default=info
+        serviceAccount:
+          name: string | default=eks-controller-sa
+  resources:
+  - id: eksCRDGroup
+    template:
+      apiVersion: kro.run/v1alpha1
+      kind: EKSCRDGroup
+      metadata:
+        name: ${schema.spec.name}-crd-group
+      spec:
+        name: ${schema.spec.name}-crd-group
+  - id: eksControllerIamPolicy
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Policy
+      metadata:
+        name: ${schema.spec.name}-iam-policy
+      spec:
+        name: ${schema.spec.name}-iam-policy
+        description: ${schema.spec.values.iamPolicy.description}
+        policyDocument: >
+          {
+            "Version": "2012-10-17",
+            "Statement": [
+              {
+                "Sid": "VisualEditor0",
+                "Effect": "Allow",
+                "Action": [
+                  "eks:*",
+                  "iam:GetRole",
+                  "iam:PassRole",
+                  "iam:ListAttachedRolePolicies",
+                  "ec2:DescribeSubnets"
+                ],
+                "Resource": "*"
+              }
+            ]
+          }
+  - id: eksControllerIamRole
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Role
+      metadata:
+        name: ${schema.spec.name}-iam-role
+        namespace: ${schema.spec.namespace}
+      spec:
+        name: ${schema.spec.name}-iam-role
+        description: ${schema.spec.values.iamRole.roleDescription}
+        maxSessionDuration: ${schema.spec.values.iamRole.maxSessionDuration}
+        policies:
+        - ${eksControllerIamPolicy.status.ackResourceMetadata.arn}
+        assumeRolePolicyDocument: >
+          {
+            "Version":"2012-10-17",
+            "Statement": [{
+              "Effect":"Allow",
+              "Principal": {"Federated": "arn:aws:iam::${schema.spec.values.aws.accountID}:oidc-provider/${schema.spec.values.iamRole.oidcProvider}"},
+              "Action": ["sts:AssumeRoleWithWebIdentity"],
+              "Condition": {
+                "StringEquals": {"${schema.spec.values.iamRole.oidcProvider}:sub": "system:serviceaccount:${schema.spec.namespace}:${schema.spec.values.serviceAccount.name}"}
+              }
+            }]
+          }
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.values.serviceAccount.name}
+        namespace: ${schema.spec.namespace}
+        annotations:
+          eks.amazonaws.com/role-arn : ${eksControllerIamRole.status.ackResourceMetadata.arn}
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        name: ${schema.spec.name}-deployment
+        namespace: ${schema.spec.namespace}
+        labels:
+          app.kubernetes.io.name: ${schema.spec.name}-deployment
+          app.kubernetes.io.instance: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels:
+            app.kubernetes.io.name: ${schema.spec.name}-deployment
+            app.kubernetes.io.instance: ${schema.spec.name}
+        template:
+          metadata:
+            labels:
+              app.kubernetes.io.name: ${schema.spec.name}-deployment
+              app.kubernetes.io.instance: ${schema.spec.name}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - command:
+              - ./bin/controller
+              args:
+              - --aws-region
+              - ${schema.spec.values.aws.region}
+              - --enable-development-logging=${schema.spec.values.log.enabled}
+              - --log-level
+              - ${schema.spec.values.log.level}
+              - --deletion-policy
+              - ${schema.spec.values.image.deletePolicy}
+              - --watch-namespace
+              - ${schema.spec.namespace}
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              name: controller
+              ports:
+                - name: http
+                  containerPort: ${schema.spec.values.deployment.containerPort}
+              resources:
+                requests:
+                  memory: ${schema.spec.values.image.resources.requests.memory}
+                  cpu: ${schema.spec.values.image.resources.requests.cpu}
+                limits:
+                    memory: ${schema.spec.values.image.resources.limits.memory}
+                    cpu: ${schema.spec.values.image.resources.limits.cpu}
+              env:
+              - name: ACK_SYSTEM_NAMESPACE
+                value: ${schema.spec.namespace}
+              - name: AWS_REGION
+                value: ${schema.spec.values.aws.region}
+              - name: DELETE_POLICY
+                value: ${schema.spec.values.image.deletePolicy}
+              - name: ACK_LOG_LEVEL
+                value: ${schema.spec.values.log.level}
+              ports:
+              - containerPort: 80
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}-clusterrolebinding
+      roleRef:
+        kind: ClusterRole
+        apiGroup: rbac.authorization.k8s.io
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}-clusterrole
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - configmaps
+        - secrets
+        verbs:
+        - get
+        - list
+        - patch
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - namespaces
+        verbs:
+        - get
+        - list
+        - watch
+      - apiGroups:
+        - ec2.services.k8s.aws
+        resources:
+        - securitygroups
+        - securitygroups/status
+        - subnets
+        - subnets/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries
+        - addons
+        - clusters
+        - fargateprofiles
+        - identityproviderconfigs
+        - nodegroups
+        - podidentityassociations
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries/status
+        - addons/status
+        - clusters/status
+        - fargateprofiles/status
+        - identityproviderconfigs/status
+        - nodegroups/status
+        - podidentityassociations/status
+        verbs:
+        - get
+        - patch
+        - update
+      - apiGroups:
+        - iam.services.k8s.aws
+        resources:
+        - roles
+        - roles/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - kms.services.k8s.aws
+        resources:
+        - keys
+        - keys/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources
+        - fieldexports
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources/status
+        - fieldexports/status
+        verbs:
+        - get
+        - patch
+        - update
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/deploying-coredns.md b/website/versioned_docs/version-0.1.0/examples/deploying-coredns.md
new file mode 100644
index 0000000..e99e430
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/deploying-coredns.md
@@ -0,0 +1,189 @@
+---
+sidebar_position: 10
+---
+
+# CoreDNS Deployment
+
+```yaml title="coredns-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: coredns.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CoreDNSDeployment
+    spec:
+      name: string | default=mycoredns
+      namespace: string | default=default
+      values:
+        clusterRole:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/bootstrapping": "rbac-defaults"}'
+        clusterRoleBinding:
+          annotations: 'map[string]string | default={"rbac.authorization.kubernetes.io/autoupdate": "\"true\""}'
+        configMap:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns"}'
+        deployment:
+          annotations: 'map[string]string | default={"deployment.kubernetes.io/revision": "\"1\""}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/name": "CoreDNS"}'
+          replicas: integer | default=2
+        image:
+          repository: string | default=coredns/coredns
+          tag: string | default=1.11.3
+        resources:
+          limits:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+          requests:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+        service:
+          annotations: 'map[string]string | default={"prometheus.io/port": "9153", "prometheus.io/scrape": "true"}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "kube-dns", "k8s-app": "kube-dns", "kubernetes.io/cluster-service": "true", "kubernetes.io/name": "CoreDNS"}'
+          clusterIP: string | default=10.100.123.45
+          clusterIPs: '[]string | default=["10.100.123.45"]'
+          ipFamilies: '[]string | default=["IPv4"]'
+          type: string | default=ClusterIP
+        serviceAccount:
+          secrets: 'map[string]string | default={"name": "coredns-token-pvcnf"}'
+  resources:
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - endpoints
+        - services
+        - pods
+        - namespaces
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - discovery.k8s.io
+        resources:
+        - endpointslices
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - nodes
+        verbs:
+        - get
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+        annotations: ${schema.spec.values.clusterRoleBinding.annotations}
+      roleRef:
+        apiGroup: rbac.authorization.k8s.io
+        kind: ClusterRole
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: configMap
+    template:
+      apiVersion: v1
+      kind: ConfigMap
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.configMap.labels}
+      data:
+        Corefile: |-
+          .:53 {
+              errors
+              health
+              kubernetes cluster.local in-addr.arpa ip6.arpa {
+                pods insecure
+                fallthrough in-addr.arpa ip6.arpa
+              }
+              prometheus :9153
+              forward . /etc/resolv.conf
+              cache 30
+              loop
+              reload
+              loadbalance
+          }
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        annotations: ${schema.spec.values.deployment.annotations}
+        labels: ${schema.spec.values.deployment.labels}
+        name: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels: ${schema.spec.values.configMap.labels}
+        template:
+          metadata:
+            labels: ${schema.spec.values.configMap.labels}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - name: "coredns"
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              args: ["-conf", "/etc/coredns/Corefile"]
+              resources: ${schema.spec.values.resources}
+              volumeMounts:
+              - name: config-volume
+                mountPath: /etc/coredns
+            volumes:
+              - name: config-volume
+                configMap:
+                  name: ${schema.spec.name}
+                  items:
+                  - key: Corefile
+                    path: Corefile
+  - id: service
+    template:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.service.labels}
+        annotations: ${schema.spec.values.service.annotations}
+      spec:
+        selector:
+          k8s-app: kube-dns
+        clusterIP: ${schema.spec.values.service.clusterIP}
+        clusterIPs: ${schema.spec.values.service.clusterIPs}
+        internalTrafficPolicy: Cluster
+        ipFamilies: ${schema.spec.values.service.ipFamilies}
+        ports:
+        - name: dns
+          port: 53
+          protocol: UDP
+          targetPort: 53
+        - name: dns-tcp
+          port: 53
+          protocol: TCP
+          targetPort: 53
+        selector:
+         k8s-app: kube-dns
+        sessionAffinity: None
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.name}
+        namespace: ${schema.spec.namespace}
+        labels: ${schema.spec.values.configMap.labels}
+      secrets:
+      - ${schema.spec.values.serviceAccount.secrets}
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/examples.md b/website/versioned_docs/version-0.1.0/examples/examples.md
new file mode 100644
index 0000000..299e59b
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/examples.md
@@ -0,0 +1,49 @@
+---
+sidebar_position: 0
+---
+
+# Examples
+
+This section provides a collection of examples demonstrating how to define and
+use ResourceGroups in **kro** for various scenarios. Each example showcases a
+specific use case and includes a detailed explanation along with the
+corresponding YAML definitions.
+
+## Basic Examples
+
+- [Empty ResourceGroup (Noop)](./noop.md) Explore the simplest form of a
+  ResourceGroup that doesn't define any resources, serving as a reference for
+  the basic structure.
+
+- [Simple Web Application](./web-app.md) Deploy a basic web application with a
+  Deployment and Service.
+
+- [Web Application with Ingress](./web-app-ingress.md) Extend the basic web
+  application example to include an optional Ingress resource for external
+  access.
+
+## Advanced Examples
+
+- [Deploying CoreDNS](./deploying-coredns.md) Learn how to deploy CoreDNS in a
+  Kubernetes cluster using kro ResourceGroups, including the necessary
+  Deployment, Service, and ConfigMap.
+
+- [Deploying a Controller](./deploying-controller.md) Discover how to deploy a
+  Kubernetes controller using kro ResourceGroups, including the necessary
+  Deployment, ServiceAccount, and CRDs.
+
+- [AWS Networking Stack](./ack-networking-stack.md) Learn how to define and
+  manage an AWS networking stack using kro ResourceGroups, including VPCs,
+  subnets, and security groups.
+
+- [EKS Cluster with ACK CRDs](./ack-eks-cluster.md) Explore how to define and
+  manage an EKS cluster using AWS Controllers for Kubernetes (ACK) CRDs within a
+  kro ResourceGroup.
+
+- [Valkey CacheCluster with ACK CRDs](./ack-valkey-cachecluster.md) Learn how to
+  create and configure a Valkey CacheCluster using ACK CRDs in a kro
+  ResourceGroup.
+
+- [Pod and RDS DBInstance](./pod-rds-dbinstance.md) Deploy a Pod and an RDS
+  DBInstance in a kro ResourceGroup, showcasing the use of multiple resources
+  with dependencies.
diff --git a/website/versioned_docs/version-0.1.0/examples/noop.md b/website/versioned_docs/version-0.1.0/examples/noop.md
new file mode 100644
index 0000000..81da2c0
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/noop.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 5
+---
+
+# Empty ResourceGroup
+
+```yaml title="noop.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: kro.run/v1alpha1
+spec:
+  apiVersion: v1alpha1
+  kind: NoOp
+  definition:
+    spec:
+      name: string | required=true
+  resources: []
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/pod-rds-dbinstance.md b/website/versioned_docs/version-0.1.0/examples/pod-rds-dbinstance.md
new file mode 100644
index 0000000..3cc93e7
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/pod-rds-dbinstance.md
@@ -0,0 +1,51 @@
+---
+sidebar_position: 20
+---
+
+# Pod with RDS DBInstance
+
+```yaml title="deploymentdbinstance-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: deploymentandawspostgres
+spec:
+  apiVersion: v1alpha1
+  kind: DeploymentAndAWSPostgres
+
+  # CRD Definition
+  definition:
+    spec:
+      applicationName: string
+      image: string
+      location: string
+
+  # Resources
+  resources:
+    - id: dbinstance
+      definition:
+        apiVersion: rds.saervices.k8s.aws/v1alpha1
+        kind: DBInstance
+        metadata:
+          name: ${schema.spec.applicationName}-dbinstance
+        spec:
+          # need to specify the required fields (e.g masterUsername, masterPassword)
+          engine: postgres
+          dbInstanceIdentifier: ${schema.spec.applicationName}-dbinstance
+          allocatedStorage: 20
+          dbInstanceClass: db.t3.micro
+
+    - id: pod
+      definition:
+        apiVersion: v1
+        kind: Pod
+        metadata:
+          name: ${schema.spec.applicationName}-pod
+        spec:
+          containers:
+            - name: container1
+              image: ${schema.spec.image}
+              env:
+                - name: POSTGRESS_ENDPOINT
+                  value: ${dbinstance.status.endpoint.address}
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/web-app-ingress.md b/website/versioned_docs/version-0.1.0/examples/web-app-ingress.md
new file mode 100644
index 0000000..ad054e3
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/web-app-ingress.md
@@ -0,0 +1,92 @@
+---
+sidebar_position: 10
+---
+
+# Web Application w/ Ingress
+
+```yaml title="webapp-ingress.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RG (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
diff --git a/website/versioned_docs/version-0.1.0/examples/web-app.md b/website/versioned_docs/version-0.1.0/examples/web-app.md
new file mode 100644
index 0000000..747f2bd
--- /dev/null
+++ b/website/versioned_docs/version-0.1.0/examples/web-app.md
@@ -0,0 +1,53 @@
+---
+sidebar_position: 10
+---
+
+# Web Application
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGroup
+metadata:
+  name: deploymentservice
+spec:
+  apiVersion: v1alpha1
+  kind: DeploymentService
+  definition:
+    spec:
+      name: string
+  resources:
+    - id: deployment
+      definition:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-deployment
+                  image: nginx
+                  ports:
+                    - containerPort: 80
+    - id: service
+      definition:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          selector:
+            app: deployment
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+```
diff --git a/website/versioned_docs/version-0.2.0/docs/concepts/00-resource-group-definitions.md b/website/versioned_docs/version-0.2.0/docs/concepts/00-resource-group-definitions.md
new file mode 100644
index 0000000..89884a3
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/concepts/00-resource-group-definitions.md
@@ -0,0 +1,167 @@
+---
+sidebar_position: 1
+---
+
+# ResourceGraphDefinitions
+
+ResourceGraphDefinitions are the fundamental building blocks in **kro**. They provide a
+way to define, organize, and manage sets of related Kubernetes resources as a
+single, reusable unit.
+
+## What is a ResourceGraphDefinition?
+
+A **ResourceGraphDefinition** is a custom resource that lets you create new Kubernetes
+APIs for deploying multiple resources together. It acts as a blueprint,
+defining:
+
+- What users can configure (schema)
+- What resources to create (resources)
+- How resources reference each other (dependencies)
+- When resources should be included (conditions)
+- What status to expose (status)
+
+When you create a **ResourceGraphDefinition**, kro generates a new API (a.k.a Custom
+Resource Defintion) in your cluster that others can use to deploy resources in a
+consistent, controlled way.
+
+## Anatomy of a ResourceGraphDefinition
+
+A ResourceGraphDefinition, like any Kubernetes resource, consists of three main parts:
+
+1. **Metadata**: name, namespace, labels, etc.
+2. **Spec**: Defines the structure and properties of the ResourceGraphDefinition
+3. **Status**: Reflects the current state of the ResourceGraphDefinition
+
+The `spec` section of a ResourceGraphDefinition contains two main components:
+
+- **Schema**: Defines what an instance of your API looks like:
+  - What users can configure during creation and update
+  - What status information they can view
+  - Default values and validation rules
+- **Resources**: Specifies the Kubernetes resources to create:
+  - Resource templates
+  - Dependencies between resources
+  - Conditions for inclusion
+  - Readiness criteria
+
+This structure translates to YAML as follows:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-resourcegraphdefinition # Metadata section
+spec:
+  schema: # Define your API
+    apiVersion: v1alpha1 # API version
+    kind: MyAPI # API kind
+    spec: {} # fields users can configure
+    status: {} # fields kro will populate
+
+  # Define the resources kro will manage
+  resources:
+    - id: resource1
+      # declare your resources along with default values and variables
+      template: {}
+```
+
+Let's look at each component in detail...
+
+## Understanding the Schema
+
+The schema section defines your new API's structure. It determines:
+
+- What fields users can configure when creating instances
+- What status information they can view
+- Type validation and default values
+
+Here's an example schema:
+
+```yaml
+schema:
+  apiVersion: v1alpha1
+  kind: WebApplication # This becomes your new API type
+  spec:
+    # Fields users can configure using a simple, straightforward syntax
+    name: string
+    image: string | default="nginx"
+    replicas: integer | default=3
+    ingress:
+      enabled: boolean | default=false
+
+  status:
+    # Fields kro will populate automatically from your resources
+    # Types are inferred from these CEL expressions
+    availableReplicas: ${deployment.status.availableReplicas}
+    conditions: ${deployment.status.conditions}
+```
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI spec compatible.
+No need to write complex OpenAPI schemas - just define your fields and types in
+a straightforward way. For the complete specification of this format, check out
+the [Simple Schema specification](./10-simple-schema.md). Status fields use CEL
+expressions to reference fields from resources defined in your ResourceGraphDefinition.
+kro automatically:
+
+- Infers the correct types from your expressions
+- Validates that referenced resources exist
+- Updates these fields as your resources change
+
+## ResourceGraphDefinition Processing
+
+When you create a **ResourceGraphDefinition**, kro processes it in several steps to ensure
+correctness and set up the necessary components:
+
+1. **Validation**: kro validates your **ResourceGraphDefinition** to ensure it's well
+   formed and follows the correct syntax, maximizing the chances of successful
+   deployment, and catching as many errors as possible early on. It:
+
+   - Validates your schema definition follows the simple schema format
+   - Ensures all resource templates are valid Kubernetes manifests
+   - Checks that referenced values exist and are of the correct type
+   - Confirms resource dependencies form a valid Directed Acycled Graph(DAG)
+     without cycles
+   - Validates all CEL expressions in status fields and conditions
+
+2. **API Generation**: kro generates and registers a new CRD in your cluster
+   based on your schema. For example, if your **ResourceGraphDefinition** defines a
+   `WebApplication` API, kro creates a CRD that:
+
+   - Provides API validation based on your schema definition
+   - Automatically applies default values you've defined
+   - Makes status information available to users and other systems
+   - Integrates seamlessly with kubectl and other Kubernetes tools
+
+3. **Controller Configuration**: kro configures itself to watch for instances of
+   your new API and:
+
+   - Creates all required resources following the dependency order
+   - Manages references and value passing between resources
+   - Handles the complete lifecycle for create, update, and delete operations
+   - Keeps status information up to date based on actual resource states
+
+For instance, when you create a `WebApplication` ResourceGraphDefinition, kro generates
+the `webapplications.kro.run` CRD. When users create instances of this API, kro
+manages all the underlying resources (Deployments, Services, Custom Resources,
+etc.) automatically.
+
+kro continuously monitors your ResourceGraphDefinition for changes, updating the API and
+its behavior accordingly.
+
+## ResourceGraphDefinition Instance Example
+
+After the **ResourceGraphDefinition** is validated and registered in the cluster, users
+can can create instances of it. Here's an example of how an instance for the
+`SimpleWebApp` might look:
+
+```yaml title="my-web-app-instance.yaml"
+apiVersion: kro.run/v1alpha1
+kind: SimpleWebApp
+metadata:
+  name: my-web-app
+spec:
+  appName: awesome-app
+  image: nginx:latest
+  replicas: 3
+```
diff --git a/website/versioned_docs/version-0.2.0/docs/concepts/10-simple-schema.md b/website/versioned_docs/version-0.2.0/docs/concepts/10-simple-schema.md
new file mode 100644
index 0000000..62db74f
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/concepts/10-simple-schema.md
@@ -0,0 +1,194 @@
+---
+sidebar_position: 2
+---
+
+# Simple Schema
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI specification
+compatible. Here's a comprehensive example:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: web-application
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: WebApplication
+    spec:
+      # Basic types
+      name: string | required=true description="My Name"
+      replicas: integer | default=1 minimum=1 maximum=100
+      image: string | required=true
+
+      # Structured type
+      ingress:
+        enabled: boolean | default=false
+        host: string | default="example.com"
+        path: string | default="/"
+
+      # Array type
+      ports: "[]integer"
+
+      # Map type
+      env: "map[string]string"
+
+    status:
+      # Status fields with auto-inferred types
+      availableReplicas: ${deployment.status.availableReplicas}
+      serviceEndpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Type Definitions
+
+### Basic Types
+
+kro supports these foundational types:
+
+- `string`: Text values
+- `integer`: Whole numbers
+- `boolean`: True/False values
+- `number`: Decimal numbers
+
+For example:
+
+```yaml
+name: string
+age: integer
+enabled: boolean
+price: number
+```
+
+### Structure Types
+
+You can create complex objects by nesting fields. Each field can use any type,
+including other structures:
+
+```yaml
+# Simple structure
+address:
+  street: string
+  city: string
+  zipcode: string
+
+# Nested structures
+user:
+  name: string
+  address: # Nested object
+    street: string
+    city: string
+  contacts: "[]string" # Array of strings
+```
+
+### Array Types
+
+Arrays are denoted using `[]` syntax:
+
+- Basic arrays: `[]string`, `[]integer`, `[]boolean`
+
+Examples:
+
+```yaml
+tags: []string
+ports: []integer
+```
+
+### Map Types
+
+Maps are key-value pairs denoted as `map[keyType]valueType`:
+
+- `map[string]string`: String to string mapping
+- `map[string]integer`: String to integer mapping
+
+Examples:
+
+```yaml
+labels: "map[string]string"
+metrics: "map[string]number"
+```
+
+## Validation and Documentation
+
+Fields can have multiple markers for validation and documentation:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+### Supported Markers
+
+- `required=true`: Field must be provided
+- `default=value`: Default value if not specified
+- `description="..."`: Field documentation
+- `enum="value1,value2"`: Allowed values
+- `minimum=value`: Minimum value for numbers
+- `maximum=value`: Maximum value for numbers
+
+Multiple markers can be combined using the `|` separator.
+
+For example:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+```
+
+## Status Fields
+
+Status fields use CEL expressions to reference values from resources. kro
+automatically:
+
+- Infers the correct types from the expressions
+- Validates that referenced resources exist
+- Updates values when the underlying resources change
+
+```yaml
+status:
+  # Types are inferred from the referenced fields
+  availableReplicas: ${deployment.status.availableReplicas}
+  endpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Default Status Fields
+
+kro automatically injects two fields to every instance's status:
+
+### 1. Conditions
+
+An array of condition objects tracking the instance's state:
+
+```yaml
+status:
+  conditions:
+    - type: string # e.g., "Ready", "Progressing"
+      status: string # "True", "False", "Unknown"
+      lastTransitionTime: string
+      reason: string
+      message: string
+```
+
+Common condition types:
+
+- `Ready`: Instance is fully reconciled
+- `Progressing`: Working towards desired state
+- `Degraded`: Operational but not optimal
+- `Error`: Reconciliation error occurred
+
+### 2. State
+
+A high-level summary of the instance's status:
+
+```yaml
+status:
+  state: string # Ready, Progressing, Degraded, Unknown, Deleting
+```
+
+:::tip
+
+`conditions` and `state` are reserved words. If defined in your schema, kro will
+override them with its own values.
+
+:::
diff --git a/website/versioned_docs/version-0.2.0/docs/concepts/15-instances.md b/website/versioned_docs/version-0.2.0/docs/concepts/15-instances.md
new file mode 100644
index 0000000..eb9f575
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/concepts/15-instances.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 15
+---
+
+# Instances
+
+Once **kro** processes your ResourceGraphDefinition, it creates a new API in your cluster.
+Users can then create instances of this API to deploy resources in a consistent,
+controlled way.
+
+## Understanding Instances
+
+An instance represents your deployed application. When you create an instance,
+you're telling kro "I want this set of resources running in my cluster". The
+instance contains your configuration values and serves as the single source of
+truth for your application's desired state. Here's an example instance of our
+WebApplication API:
+
+```yaml
+apiVersion: v1alpha1
+kind: WebApplication
+metadata:
+  name: my-app
+spec:
+  name: web-app
+  image: nginx:latest
+  ingress:
+    enabled: true
+```
+
+When you create this instance, kro:
+
+- Creates all required resources (Deployment, Service, Ingress)
+- Configures them according to your specification
+- Manages them as a single unit
+- Keeps their status up to date
+
+## How kro Manages Instances
+
+kro uses the standard Kubernetes reconciliation pattern to manage instances:
+
+1. **Observe**: Watches for changes to your instance or its resources
+2. **Compare**: Checks if current state matches desired state
+3. **Act**: Creates, updates, or deletes resources as needed
+4. **Report**: Updates status to reflect current state
+
+This continuous loop ensures your resources stay in sync with your desired
+state, providing features like:
+
+- Self-healing
+- Automatic updates
+- Consistent state management
+- Status tracking
+
+## Monitoring Your Instances
+
+KRO provides rich status information for every instance:
+
+```bash
+$ kubectl get webapplication my-app
+NAME     STATUS    SYNCED   AGE
+my-app   ACTIVE    true     30s
+```
+
+For detailed status, check the instance's YAML:
+
+```yaml
+status:
+  state: ACTIVE # High-level instance state
+  availableReplicas: 3 # Status from Deployment
+  conditions: # Detailed status conditions
+    - type: Ready
+      status: "True"
+      lastTransitionTime: "2024-07-23T01:01:59Z"
+      reason: ResourcesAvailable
+      message: "All resources are available and configured correctly"
+```
+
+### Understanding Status
+
+Every instance includes:
+
+1. **State**: High-level status
+
+   - `Running`: All resources are ready
+   - `Progressing`: Working towards desired state
+   - `Failed`: Error occurred
+   - `Terminating`: Being deleted
+
+2. **Conditions**: Detailed status information
+
+   - `Ready`: Instance is fully operational
+   - `Progressing`: Changes are being applied
+   - `Degraded`: Operating but not optimal
+   - `Error`: Problems detected
+
+3. **Resource Status**: Status from your resources
+   - Values you defined in your ResourceGraphDefinition's status section
+   - Automatically updated as resources change
+
+## Best Practices
+
+- **Version Control**: Keep your instance definitions in version control
+  alongside your application code. This helps track changes, rollback when
+  needed, and maintain configuration history.
+
+- **Use Labels Effectively**: Add meaningful labels to your instances for better
+  organization, filtering, and integration with other tools. kro propagates
+  labels to the sub resources for easy identification.
+
+- **Active Monitoring**: Regularly check instance status beyond just "Running".
+  Watch conditions, resource status, and events to catch potential issues early
+  and understand your application's health.
+
+- **Regular Reviews**: Periodically review your instance configurations to
+  ensure they reflect current requirements and best practices. Update resource
+  requests, limits, and other configurations as your application needs evolve.
diff --git a/website/versioned_docs/version-0.2.0/docs/concepts/_category_.json b/website/versioned_docs/version-0.2.0/docs/concepts/_category_.json
new file mode 100644
index 0000000..8d8506e
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/concepts/_category_.json
@@ -0,0 +1,9 @@
+{
+  "label": "Concepts",
+  "position": 40,
+  "link": {
+    "description": "Learn about the core concepts of kro"
+  },
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.2.0/docs/faq.md b/website/versioned_docs/version-0.2.0/docs/faq.md
new file mode 100644
index 0000000..84bdb51
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/faq.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: "FAQ"
+sidebar_position: 100
+---
+
+# FAQ
+
+1. **What is kro?**
+
+   Kube Resource Orchestrator (**kro**) is a new operator for Kubernetes that
+   simplifies the creation of complex Kubernetes resource configurations. kro
+   lets you create and manage custom groups of Kubernetes resources by defining
+   them as a _ResourceGraphDefinition_, the project's fundamental custom resource.
+   ResourceGraphDefinition specifications define a set of resources and how they relate to
+   each other functionally. Once defined, resource groups can be applied to a
+   Kubernetes cluster where the kro controller is running. Once validated by
+   kro, you can create instances of your resource group. kro translates your
+   ResourceGraphDefinition instance and its parameters into specific Kubernetes resources
+   and configurations which it then manages for you.
+
+2. **How does kro work?**
+
+   kro is designed to use core Kubernetes primitives to make resource grouping,
+   customization, and dependency management simpler. When a ResourceGraphDefinition is
+   applied to the cluster, the kro controller verifies its specification, then
+   dynamically creates a new CRD and registers it with the API server. kro then
+   deploys a dedicated controller to respond to instance events on the CRD. This
+   microcontroller is responsible for managing the lifecycle of resources
+   defined in the ResourceGraphDefinition for each instance that is created.
+
+3. **How do I use kro?**
+
+   First, you define your custom resource groups by creating _ResourceGraphDefinition_
+   specifications. These specify one or more Kubernetes resources, and can
+   include specific configuration for each resource.
+
+   For example, you can define a _WebApp_ resource group that is composed of a
+   _Deployment_, pre-configured to deploy your web server backend, and a
+   _Service_ configured to run on a specific port. You can just as easily create
+   a more complex _WebAppWithDB_ resource group by combining the existing
+   _WebApp_ resource group with a _Table_ custom resource to provision a cloud
+   managed database instance for your web app to use.
+
+   Once you have defined a ResourceGraphDefinition, you can apply it to a Kubernetes
+   cluster where the kro controller is running. kro will take care of the heavy
+   lifting of creating CRDs and deploying dedicated controllers in order to
+   manage instances of your new custom resource group.
+
+   You are now ready to create instances of your new custom resource group, and
+   kro will respond by dynamically creating, configuring, and managing the
+   underlying Kubernetes resources for you.
+
+4. **Why did you build this project?**
+
+   We want to help streamline and simplify building with Kubernetes. Building
+   with Kubernetes means dealing with resources that need to operate and work
+   together, and orchestrating this can get complex and difficult at scale. With
+   this project, we're taking a first step in reducing the complexity of
+   resource dependency management and customization, paving the way for a simple
+   and scalable way to create complex custom resources for Kubernetes.
+
+5. **Can I use this in production?**
+
+   This project is in active development and not yet intended for production
+   use. The _ResourceGraphDefinition_ CRD and other APIs used in this project are not
+   solidified and highly subject to change.
diff --git a/website/versioned_docs/version-0.2.0/docs/getting-started/01-Installation.md b/website/versioned_docs/version-0.2.0/docs/getting-started/01-Installation.md
new file mode 100644
index 0000000..b159df0
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/getting-started/01-Installation.md
@@ -0,0 +1,110 @@
+---
+sidebar_position: 1
+---
+
+# Installing kro
+
+This guide walks you through the process of installing kro on your Kubernetes
+cluster using Helm.
+
+## Prerequisites
+
+Before you begin, ensure you have the following:
+
+1. `Helm` 3.x installed
+2. `kubectl` installed and configured to interact with your Kubernetes cluster
+
+## Installation Steps
+
+:::info[**Alpha Stage**]
+
+kro is currently in alpha stage. While the images are publicly available, please
+note that the software is still under active development and APIs may change.
+
+:::
+
+### Install kro using Helm
+
+Once authenticated, install kro using the Helm chart:
+
+Fetch the latest release version from GitHub
+```sh
+export KRO_VERSION=$(curl -sL \
+    https://api.github.com/repos/kro-run/kro/releases/latest | \
+    jq -r '.tag_name | ltrimstr("v")'
+  )
+```
+Validate `KRO_VERSION` populated with a version
+```
+echo $KRO_VERSION
+```
+Install kro using Helm
+```
+helm install kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --create-namespace \
+  --version=${KRO_VERSION}
+```
+
+## Verifying the Installation
+
+After running the installation command, verify that Kro has been installed
+correctly:
+
+1. Check the Helm release:
+
+   ```sh
+   helm -n kro list
+   ```
+
+   Expected result: You should see the "kro" release listed.
+   ```
+    NAME	NAMESPACE	REVISION	STATUS  
+    kro 	kro      	1       	deployed
+   ```
+
+2. Check the kro pods:
+   ```sh
+   kubectl get pods -n kro
+   ```
+   Expected result: You should see kro-related pods running.
+   ```
+    NAME                        READY   STATUS             RESTARTS   AGE
+    kro-7d98bc6f46-jvjl5        1/1     Running            0           1s 
+   ```
+
+## Upgrading kro
+
+To upgrade to a newer version of kro, use the Helm upgrade command:
+
+Replace `<new-version>` with the version you want to upgrade to.
+```bash
+export KRO_VERSION=<new-version>
+```
+
+Upgrade the controller
+```
+helm upgrade kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --version=${KRO_VERSION}
+```
+
+:::info[**CRD Updates**]
+
+Helm does not support updating CRDs, so you may need to manually update or
+remove and re-apply kro related CRDs. For more information, refer to the Helm
+documentation.
+
+:::
+
+## Uninstalling kro
+
+To uninstall kro, use the following command:
+
+```bash
+helm uninstall kro -n kro
+```
+
+Keep in mind that this command will remove all kro resources from your cluster,
+except for the ResourceGraphDefinition CRD and any other custom resources you may have
+created.
diff --git a/website/versioned_docs/version-0.2.0/docs/getting-started/02-deploy-a-resource-graph-definition.md b/website/versioned_docs/version-0.2.0/docs/getting-started/02-deploy-a-resource-graph-definition.md
new file mode 100644
index 0000000..1259204
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/getting-started/02-deploy-a-resource-graph-definition.md
@@ -0,0 +1,227 @@
+---
+sidebar_position: 2
+---
+
+# Deploy Your First ResourceGraphDefinition
+
+This guide will walk you through creating your first Resource Graph Definition in **kro**.
+We'll create a simple `ResourceGraphDefinition` that demonstrates key kro features.
+
+## What is a **ResourceGraphDefinition**?
+
+A `ResourceGraphDefinition` lets you create new Kubernetes APIs that deploy multiple
+resources together as a single, reusable unit. In this example, we’ll create a
+`ResourceGraphDefinition` that packages a reusable set of resources, including a
+`Deployment`, `Service`, and `Ingress`. These resources are available in any
+Kubernetes cluster. Users can then call the API to deploy resources as a single
+unit, ensuring they're always created together with the right configuration.
+
+Under the hood, when you create a `ResourceGraphDefinition`, kro:
+
+1. Treats your resources as a Directed Acyclic Graph (DAG) to understand their
+   dependencies
+2. Validates resource definitions and detects the correct deployment order
+3. Creates a new API (CRD) in your cluster
+4. Configures itself to watch and serve instances of this API
+
+## Prerequisites
+
+Before you begin, make sure you have the following:
+
+- **kro** [installed](./01-Installation.md) and running in your Kubernetes
+  cluster.
+- `kubectl` installed and configured to interact with your Kubernetes cluster.
+
+## Create your Application ResourceGraphDefinition
+
+Let's create a Resource Graph Definition that combines a `Deployment`, a `Service` and
+`Ingress`. Save this as `resourcegraphdefinition.yaml`:
+
+```yaml title="resourcegraphdefinition.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RG (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
+
+### Deploy the ResourceGraphDefinition
+
+1. **Create a ResourceGraphDefinition manifest file**: Create a new file with the
+   `ResourceGraphDefinition` definition. You can use the example above.
+
+2. **Apply the `ResourceGraphDefinition`**: Use the `kubectl` command to deploy the
+   ResourceGraphDefinition to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f resourcegraphdefinition.yaml
+   ```
+
+3. **Inpsect the `ResourceGraphDefinition`**: Check the status of the resources created by
+   the ResourceGraphDefinition using the `kubectl` command:
+
+   ```bash
+   kubectl get rg my-application -owide
+   ```
+
+   You should see the ResourceGraphDefinition in the `Active` state, along with relevant
+   information to help you understand your application:
+
+   ```bash
+   NAME             APIVERSION   KIND          STATE    TOPOLOGICALORDER                     AGE
+   my-application   v1alpha1     Application   Active   ["deployment","service","ingress"]   49
+   ```
+
+### Create your Application Instance
+
+Now that your `ResourceGraphDefinition` is created, kro has generated a new API
+(Application) that orchestrates creation of the a `Deployment`, a `Service`, and
+an `Ingress`. Let's use it!
+
+1. **Create an Application instance**: Create a new file named `instance.yaml`
+   with the following content:
+
+   ```yaml title="instance.yaml"
+   apiVersion: kro.run/v1alpha1
+   kind: Application
+   metadata:
+     name: my-application-instance
+   spec:
+     name: my-awesome-app
+     ingress:
+       enabled: true
+   ```
+
+2. **Apply the Application instance**: Use the `kubectl` command to deploy the
+   Application instance to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f instance.yaml
+   ```
+
+3. **Inspect the Application instance**: Check the status of the resources
+
+   ```bash
+   kubectl get applications
+   ```
+
+   After a few seconds, you should see the Application instance in the `Active`
+   state:
+
+   ```bash
+   NAME                      STATE    SYNCED   AGE
+   my-application-instance   ACTIVE   True     10s
+   ```
+
+4. **Inspect the resources**: Check the resources created by the Application
+   instance:
+
+   ```bash
+   kubectl get deployments,services,ingresses
+   ```
+
+   You should see the `Deployment`, `Service`, and `Ingress` created by the
+   Application instance.
+
+   ```bash
+   NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
+   deployment.apps/my-awesome-app   3/3     3            3           69s
+
+   NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
+   service/my-awesome-app-service   ClusterIP   10.100.167.72   <none>        80/TCP    65s
+
+   NAME                                               CLASS    HOSTS   ADDRESS   PORTS   AGE
+   ingress.networking.k8s.io/my-awesome-app-ingress   <none>   *                 80      62s
+   ```
+
+### Delete the Application instance
+
+kro can also help you clean up resources when you're done with them.
+
+1. **Delete the Application instance**: Clean up the resources by deleting the
+   Application instance:
+
+   ```bash
+   kubectl delete application my-application-instance
+   ```
+
+   Now, the resources created by the Application instance will be deleted.
diff --git a/website/versioned_docs/version-0.2.0/docs/getting-started/_category_.json b/website/versioned_docs/version-0.2.0/docs/getting-started/_category_.json
new file mode 100644
index 0000000..723093d
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/getting-started/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Getting started",
+  "position": 20,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.2.0/docs/overview.md b/website/versioned_docs/version-0.2.0/docs/overview.md
new file mode 100644
index 0000000..580e0a6
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/overview.md
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project 
+that allows you to define custom **Kubernetes APIs** using simple and straightforward 
+configuration. With kro, you can easily configure new custom APIs that create a 
+group of Kubernetes objects and the logical operations between them. kro leverages 
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same 
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates 
+the order in which objects should be created. You can define default values for fields 
+in the API specification, streamlining the process for end users who can then 
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams, can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RG is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.2.0/docs/overview.md.bak b/website/versioned_docs/version-0.2.0/docs/overview.md.bak
new file mode 100644
index 0000000..580e0a6
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/docs/overview.md.bak
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project 
+that allows you to define custom **Kubernetes APIs** using simple and straightforward 
+configuration. With kro, you can easily configure new custom APIs that create a 
+group of Kubernetes objects and the logical operations between them. kro leverages 
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same 
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates 
+the order in which objects should be created. You can define default values for fields 
+in the API specification, streamlining the process for end users who can then 
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams, can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RG is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.2.0/examples/ack-eks-cluster.md b/website/versioned_docs/version-0.2.0/examples/ack-eks-cluster.md
new file mode 100644
index 0000000..39ea5b6
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/ack-eks-cluster.md
@@ -0,0 +1,222 @@
+---
+sidebar_position: 10
+---
+
+# EKS Cluster
+
+```yaml title="eks.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscluster.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSCluster
+    spec:
+      name: string
+      version: string
+    status:
+      networkingInfo:
+        vpcID: ${clusterVPC.status.vpcID}
+        subnetAZA: ${clusterSubnetA.status.subnetID}
+        subnetAZB: ${clusterSubnetB.status.subnetID}
+      clusterARN: ${cluster.status.ackResourceMetadata.arn}
+  # resources
+  resources:
+    - id: clusterVPC
+      readyWhen:
+        - ${clusterVPC.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: kro-cluster-vpc
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSSupport: true
+          enableDNSHostnames: true
+    - id: clusterElasticIPAddress
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: ElasticIPAddress
+        metadata:
+          name: kro-cluster-eip
+        spec: {}
+    - id: clusterInternetGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: InternetGateway
+        metadata:
+          name: kro-cluster-igw
+        spec:
+          vpc: ${clusterVPC.status.vpcID}
+    - id: clusterRouteTable
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: RouteTable
+        metadata:
+          name: kro-cluster-public-route-table
+        spec:
+          vpcID: ${clusterVPC.status.vpcID}
+          routes:
+            - destinationCIDRBlock: 0.0.0.0/0
+              gatewayID: ${clusterInternetGateway.status.internetGatewayID}
+    - id: clusterSubnetA
+      readyWhen:
+        - ${clusterSubnetA.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet1
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterSubnetB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet2
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterNATGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: NATGateway
+        metadata:
+          name: kro-cluster-natgateway1
+        spec:
+          subnetID: ${clusterSubnetB.status.subnetID}
+          allocationID: ${clusterElasticIPAddress.status.allocationID}
+    - id: clusterRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-role
+        spec:
+          name: kro-cluster-role
+          description: "kro created cluster cluster role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "eks.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterNodeRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-node-role
+        spec:
+          name: kro-cluster-node-role
+          description: "kro created cluster node role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
+            - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
+            - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "ec2.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterAdminRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-pia-role
+        spec:
+          name: kro-cluster-pia-role
+          description: "kro created cluster admin pia role"
+          policies:
+            - arn:aws:iam::aws:policy/AdministratorAccess
+          assumeRolePolicyDocument: |
+            {
+                "Version": "2012-10-17",
+                "Statement": [
+                    {
+                        "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
+                        "Effect": "Allow",
+                        "Principal": {
+                            "Service": "pods.eks.amazonaws.com"
+                        },
+                        "Action": [
+                            "sts:AssumeRole",
+                            "sts:TagSession"
+                        ]
+                    }
+                ]
+            }
+    - id: cluster
+      readyWhen:
+        - ${cluster.status.status == "ACTIVE"}
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Cluster
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          name: ${schema.spec.name}
+          accessConfig:
+            authenticationMode: API_AND_CONFIG_MAP
+          roleARN: ${clusterRole.status.ackResourceMetadata.arn}
+          version: ${schema.spec.version}
+          resourcesVPCConfig:
+            endpointPrivateAccess: false
+            endpointPublicAccess: true
+            subnetIDs:
+              - ${clusterSubnetA.status.subnetID}
+              - ${clusterSubnetB.status.subnetID}
+    - id: clusterNodeGroup
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Nodegroup
+        metadata:
+          name: kro-cluster-nodegroup
+        spec:
+          name: kro-cluster-ng
+          diskSize: 100
+          clusterName: ${cluster.spec.name}
+          subnets:
+            - ${clusterSubnetA.status.subnetID}
+            - ${clusterSubnetB.status.subnetID}
+          nodeRole: ${clusterNodeRole.status.ackResourceMetadata.arn}
+          updateConfig:
+            maxUnavailable: 1
+          scalingConfig:
+            minSize: 1
+            maxSize: 1
+            desiredSize: 1
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/ack-networking-stack.md b/website/versioned_docs/version-0.2.0/examples/ack-networking-stack.md
new file mode 100644
index 0000000..def8a3e
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/ack-networking-stack.md
@@ -0,0 +1,79 @@
+---
+sidebar_position: 10
+---
+
+# Networking Stack
+
+```yaml title="networking-stack.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: networkingstack.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: NetworkingStack
+    spec:
+      name: string
+    status:
+      networkingInfo:
+        vpcID: ${vpc.status.vpcID}
+        subnetAZA: ${subnetAZA.status.subnetID}
+        subnetAZB: ${subnetAZB.status.subnetID}
+        subnetAZC: ${subnetAZC.status.subnetID}
+        securityGroup: ${securityGroup.status.id}
+  # resources
+  resources:
+    - id: vpc
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: vpc-${schema.spec.name}
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSHostnames: false
+          enableDNSSupport: true
+    - id: subnetAZA
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-a-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-b-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZC
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-c-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2c
+          cidrBlock: 192.168.128.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: securityGroup
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: cluster-security-group-${schema.spec.name}
+        spec:
+          vpcID: ${vpc.status.vpcID}
+          name: my-sg-${schema.spec.name}
+          description: something something
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/ack-valkey-cachecluster.md b/website/versioned_docs/version-0.2.0/examples/ack-valkey-cachecluster.md
new file mode 100644
index 0000000..f5b76eb
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/ack-valkey-cachecluster.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 10
+---
+
+# Valkey cluster
+
+```yaml title="valkey-cachecluster.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: valkey.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: Valkey
+    spec:
+      name: string
+    status:
+      csgARN: ${cacheSubnetGroup.status.ackResourceMetadata.arn}
+      subnets: ${cacheSubnetGroup.status.subnets}
+      clusterARN: ${valkey.status.ackResourceMetadata.arn}
+  resources:
+    - id: networkingStack
+      template:
+        apiVersion: kro.run/v1alpha1
+        kind: NetworkingStack
+        metadata:
+          name: ${schema.spec.name}-networking-stack
+        spec:
+          name: ${schema.spec.name}-networking-stack
+    - id: cacheSubnetGroup
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheSubnetGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-subnet-group
+        spec:
+          cacheSubnetGroupDescription: "Valkey ElastiCache subnet group"
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          subnetIDs:
+            - ${networkingStack.status.networkingInfo.subnetAZA}
+            - ${networkingStack.status.networkingInfo.subnetAZB}
+            - ${networkingStack.status.networkingInfo.subnetAZC}
+    - id: sg
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-sg
+        spec:
+          name: ${schema.spec.name}-valkey-sg
+          description: "Valkey ElastiCache security group"
+          vpcID: ${networkingStack.status.networkingInfo.vpcID}
+          ingressRules:
+            - fromPort: 6379
+              toPort: 6379
+              ipProtocol: tcp
+              ipRanges:
+                - cidrIP: 0.0.0.0/0
+    - id: valkey
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheCluster
+        metadata:
+          name: ${schema.spec.name}-valkey
+        spec:
+          cacheClusterID: vote-valkey-cluster
+          cacheNodeType: cache.t3.micro
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          engine: valkey
+          engineVersion: "8.x"
+          numCacheNodes: 1
+          port: 6379
+          securityGroupIDs:
+            - ${sg.status.id}
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/deploying-controller.md b/website/versioned_docs/version-0.2.0/examples/deploying-controller.md
new file mode 100644
index 0000000..3d0e4c4
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/deploying-controller.md
@@ -0,0 +1,297 @@
+---
+sidebar_position: 10
+---
+
+# Controller Deployment
+
+```yaml title="controller-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscontrollers.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSController
+    spec:
+      name: string | default=eks-controller
+      namespace: string | default=default
+      values:
+        aws:
+          accountID: string | required=true
+          region: string | default=us-west-2
+        deployment:
+          containerPort: integer | default=8080
+          replicas: integer | default=1
+        iamRole:
+          maxSessionDuration: integer | default=3600
+          oidcProvider: string | required=true
+          roleDescription: string | default=IRSA role for ACK EKS controller deployement on EKS cluster using kro Resource group
+        iamPolicy:
+          # would prefer to add a policyDocument here, need to support multiline string here
+          description: string | default="policy for eks controller"
+        image:
+          deletePolicy: string | default=delete
+          repository: string | default=public.ecr.aws/aws-controllers-k8s/eks-controller
+          tag: string | default=1.4.7
+          resources:
+            requests:
+              memory: string | default=64Mi
+              cpu: string | default=50m
+            limits:
+              memory: string | default=128Mi
+              cpu: string | default=100m
+        log:
+          enabled: boolean | default=false
+          level: string | default=info
+        serviceAccount:
+          name: string | default=eks-controller-sa
+  resources:
+  - id: eksCRDGroup
+    template:
+      apiVersion: kro.run/v1alpha1
+      kind: EKSCRDGroup
+      metadata:
+        name: ${schema.spec.name}-crd-group
+      spec:
+        name: ${schema.spec.name}-crd-group
+  - id: eksControllerIamPolicy
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Policy
+      metadata:
+        name: ${schema.spec.name}-iam-policy
+      spec:
+        name: ${schema.spec.name}-iam-policy
+        description: ${schema.spec.values.iamPolicy.description}
+        policyDocument: >
+          {
+            "Version": "2012-10-17",
+            "Statement": [
+              {
+                "Sid": "VisualEditor0",
+                "Effect": "Allow",
+                "Action": [
+                  "eks:*",
+                  "iam:GetRole",
+                  "iam:PassRole",
+                  "iam:ListAttachedRolePolicies",
+                  "ec2:DescribeSubnets"
+                ],
+                "Resource": "*"
+              }
+            ]
+          }
+  - id: eksControllerIamRole
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Role
+      metadata:
+        name: ${schema.spec.name}-iam-role
+        namespace: ${schema.spec.namespace}
+      spec:
+        name: ${schema.spec.name}-iam-role
+        description: ${schema.spec.values.iamRole.roleDescription}
+        maxSessionDuration: ${schema.spec.values.iamRole.maxSessionDuration}
+        policies:
+        - ${eksControllerIamPolicy.status.ackResourceMetadata.arn}
+        assumeRolePolicyDocument: >
+          {
+            "Version":"2012-10-17",
+            "Statement": [{
+              "Effect":"Allow",
+              "Principal": {"Federated": "arn:aws:iam::${schema.spec.values.aws.accountID}:oidc-provider/${schema.spec.values.iamRole.oidcProvider}"},
+              "Action": ["sts:AssumeRoleWithWebIdentity"],
+              "Condition": {
+                "StringEquals": {"${schema.spec.values.iamRole.oidcProvider}:sub": "system:serviceaccount:${schema.spec.namespace}:${schema.spec.values.serviceAccount.name}"}
+              }
+            }]
+          }
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.values.serviceAccount.name}
+        namespace: ${schema.spec.namespace}
+        annotations:
+          eks.amazonaws.com/role-arn : ${eksControllerIamRole.status.ackResourceMetadata.arn}
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        name: ${schema.spec.name}-deployment
+        namespace: ${schema.spec.namespace}
+        labels:
+          app.kubernetes.io.name: ${schema.spec.name}-deployment
+          app.kubernetes.io.instance: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels:
+            app.kubernetes.io.name: ${schema.spec.name}-deployment
+            app.kubernetes.io.instance: ${schema.spec.name}
+        template:
+          metadata:
+            labels:
+              app.kubernetes.io.name: ${schema.spec.name}-deployment
+              app.kubernetes.io.instance: ${schema.spec.name}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - command:
+              - ./bin/controller
+              args:
+              - --aws-region
+              - ${schema.spec.values.aws.region}
+              - --enable-development-logging=${schema.spec.values.log.enabled}
+              - --log-level
+              - ${schema.spec.values.log.level}
+              - --deletion-policy
+              - ${schema.spec.values.image.deletePolicy}
+              - --watch-namespace
+              - ${schema.spec.namespace}
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              name: controller
+              ports:
+                - name: http
+                  containerPort: ${schema.spec.values.deployment.containerPort}
+              resources:
+                requests:
+                  memory: ${schema.spec.values.image.resources.requests.memory}
+                  cpu: ${schema.spec.values.image.resources.requests.cpu}
+                limits:
+                    memory: ${schema.spec.values.image.resources.limits.memory}
+                    cpu: ${schema.spec.values.image.resources.limits.cpu}
+              env:
+              - name: ACK_SYSTEM_NAMESPACE
+                value: ${schema.spec.namespace}
+              - name: AWS_REGION
+                value: ${schema.spec.values.aws.region}
+              - name: DELETE_POLICY
+                value: ${schema.spec.values.image.deletePolicy}
+              - name: ACK_LOG_LEVEL
+                value: ${schema.spec.values.log.level}
+              ports:
+              - containerPort: 80
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}-clusterrolebinding
+      roleRef:
+        kind: ClusterRole
+        apiGroup: rbac.authorization.k8s.io
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}-clusterrole
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - configmaps
+        - secrets
+        verbs:
+        - get
+        - list
+        - patch
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - namespaces
+        verbs:
+        - get
+        - list
+        - watch
+      - apiGroups:
+        - ec2.services.k8s.aws
+        resources:
+        - securitygroups
+        - securitygroups/status
+        - subnets
+        - subnets/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries
+        - addons
+        - clusters
+        - fargateprofiles
+        - identityproviderconfigs
+        - nodegroups
+        - podidentityassociations
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries/status
+        - addons/status
+        - clusters/status
+        - fargateprofiles/status
+        - identityproviderconfigs/status
+        - nodegroups/status
+        - podidentityassociations/status
+        verbs:
+        - get
+        - patch
+        - update
+      - apiGroups:
+        - iam.services.k8s.aws
+        resources:
+        - roles
+        - roles/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - kms.services.k8s.aws
+        resources:
+        - keys
+        - keys/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources
+        - fieldexports
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources/status
+        - fieldexports/status
+        verbs:
+        - get
+        - patch
+        - update
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/deploying-coredns.md b/website/versioned_docs/version-0.2.0/examples/deploying-coredns.md
new file mode 100644
index 0000000..d10d654
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/deploying-coredns.md
@@ -0,0 +1,189 @@
+---
+sidebar_position: 10
+---
+
+# CoreDNS Deployment
+
+```yaml title="coredns-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: coredns.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CoreDNSDeployment
+    spec:
+      name: string | default=mycoredns
+      namespace: string | default=default
+      values:
+        clusterRole:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/bootstrapping": "rbac-defaults"}'
+        clusterRoleBinding:
+          annotations: 'map[string]string | default={"rbac.authorization.kubernetes.io/autoupdate": "\"true\""}'
+        configMap:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns"}'
+        deployment:
+          annotations: 'map[string]string | default={"deployment.kubernetes.io/revision": "\"1\""}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/name": "CoreDNS"}'
+          replicas: integer | default=2
+        image:
+          repository: string | default=coredns/coredns
+          tag: string | default=1.11.3
+        resources:
+          limits:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+          requests:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+        service:
+          annotations: 'map[string]string | default={"prometheus.io/port": "9153", "prometheus.io/scrape": "true"}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "kube-dns", "k8s-app": "kube-dns", "kubernetes.io/cluster-service": "true", "kubernetes.io/name": "CoreDNS"}'
+          clusterIP: string | default=10.100.123.45
+          clusterIPs: '[]string | default=["10.100.123.45"]'
+          ipFamilies: '[]string | default=["IPv4"]'
+          type: string | default=ClusterIP
+        serviceAccount:
+          secrets: 'map[string]string | default={"name": "coredns-token-pvcnf"}'
+  resources:
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - endpoints
+        - services
+        - pods
+        - namespaces
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - discovery.k8s.io
+        resources:
+        - endpointslices
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - nodes
+        verbs:
+        - get
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+        annotations: ${schema.spec.values.clusterRoleBinding.annotations}
+      roleRef:
+        apiGroup: rbac.authorization.k8s.io
+        kind: ClusterRole
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: configMap
+    template:
+      apiVersion: v1
+      kind: ConfigMap
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.configMap.labels}
+      data:
+        Corefile: |-
+          .:53 {
+              errors
+              health
+              kubernetes cluster.local in-addr.arpa ip6.arpa {
+                pods insecure
+                fallthrough in-addr.arpa ip6.arpa
+              }
+              prometheus :9153
+              forward . /etc/resolv.conf
+              cache 30
+              loop
+              reload
+              loadbalance
+          }
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        annotations: ${schema.spec.values.deployment.annotations}
+        labels: ${schema.spec.values.deployment.labels}
+        name: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels: ${schema.spec.values.configMap.labels}
+        template:
+          metadata:
+            labels: ${schema.spec.values.configMap.labels}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - name: "coredns"
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              args: ["-conf", "/etc/coredns/Corefile"]
+              resources: ${schema.spec.values.resources}
+              volumeMounts:
+              - name: config-volume
+                mountPath: /etc/coredns
+            volumes:
+              - name: config-volume
+                configMap:
+                  name: ${schema.spec.name}
+                  items:
+                  - key: Corefile
+                    path: Corefile
+  - id: service
+    template:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.service.labels}
+        annotations: ${schema.spec.values.service.annotations}
+      spec:
+        selector:
+          k8s-app: kube-dns
+        clusterIP: ${schema.spec.values.service.clusterIP}
+        clusterIPs: ${schema.spec.values.service.clusterIPs}
+        internalTrafficPolicy: Cluster
+        ipFamilies: ${schema.spec.values.service.ipFamilies}
+        ports:
+        - name: dns
+          port: 53
+          protocol: UDP
+          targetPort: 53
+        - name: dns-tcp
+          port: 53
+          protocol: TCP
+          targetPort: 53
+        selector:
+         k8s-app: kube-dns
+        sessionAffinity: None
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.name}
+        namespace: ${schema.spec.namespace}
+        labels: ${schema.spec.values.configMap.labels}
+      secrets:
+      - ${schema.spec.values.serviceAccount.secrets}
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/examples.md b/website/versioned_docs/version-0.2.0/examples/examples.md
new file mode 100644
index 0000000..dfdd440
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/examples.md
@@ -0,0 +1,49 @@
+---
+sidebar_position: 0
+---
+
+# Examples
+
+This section provides a collection of examples demonstrating how to define and
+use ResourceGraphDefinitions in **kro** for various scenarios. Each example showcases a
+specific use case and includes a detailed explanation along with the
+corresponding YAML definitions.
+
+## Basic Examples
+
+- [Empty ResourceGraphDefinition (Noop)](./noop.md) Explore the simplest form of a
+  ResourceGraphDefinition that doesn't define any resources, serving as a reference for
+  the basic structure.
+
+- [Simple Web Application](./web-app.md) Deploy a basic web application with a
+  Deployment and Service.
+
+- [Web Application with Ingress](./web-app-ingress.md) Extend the basic web
+  application example to include an optional Ingress resource for external
+  access.
+
+## Advanced Examples
+
+- [Deploying CoreDNS](./deploying-coredns.md) Learn how to deploy CoreDNS in a
+  Kubernetes cluster using kro ResourceGraphDefinitions, including the necessary
+  Deployment, Service, and ConfigMap.
+
+- [Deploying a Controller](./deploying-controller.md) Discover how to deploy a
+  Kubernetes controller using kro ResourceGraphDefinitions, including the necessary
+  Deployment, ServiceAccount, and CRDs.
+
+- [AWS Networking Stack](./ack-networking-stack.md) Learn how to define and
+  manage an AWS networking stack using kro ResourceGraphDefinitions, including VPCs,
+  subnets, and security groups.
+
+- [EKS Cluster with ACK CRDs](./ack-eks-cluster.md) Explore how to define and
+  manage an EKS cluster using AWS Controllers for Kubernetes (ACK) CRDs within a
+  kro ResourceGraphDefinition.
+
+- [Valkey CacheCluster with ACK CRDs](./ack-valkey-cachecluster.md) Learn how to
+  create and configure a Valkey CacheCluster using ACK CRDs in a kro
+  ResourceGraphDefinition.
+
+- [Pod and RDS DBInstance](./pod-rds-dbinstance.md) Deploy a Pod and an RDS
+  DBInstance in a kro ResourceGraphDefinition, showcasing the use of multiple resources
+  with dependencies.
diff --git a/website/versioned_docs/version-0.2.0/examples/noop.md b/website/versioned_docs/version-0.2.0/examples/noop.md
new file mode 100644
index 0000000..fd4b321
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/noop.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 5
+---
+
+# Empty ResourceGraphDefinition
+
+```yaml title="noop.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: kro.run/v1alpha1
+spec:
+  apiVersion: v1alpha1
+  kind: NoOp
+  definition:
+    spec:
+      name: string | required=true
+  resources: []
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/pod-rds-dbinstance.md b/website/versioned_docs/version-0.2.0/examples/pod-rds-dbinstance.md
new file mode 100644
index 0000000..9fba4b4
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/pod-rds-dbinstance.md
@@ -0,0 +1,51 @@
+---
+sidebar_position: 20
+---
+
+# Pod with RDS DBInstance
+
+```yaml title="deploymentdbinstance-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentandawspostgres
+spec:
+  apiVersion: v1alpha1
+  kind: DeploymentAndAWSPostgres
+
+  # CRD Definition
+  definition:
+    spec:
+      applicationName: string
+      image: string
+      location: string
+
+  # Resources
+  resources:
+    - id: dbinstance
+      definition:
+        apiVersion: rds.services.k8s.aws/v1alpha1
+        kind: DBInstance
+        metadata:
+          name: ${schema.spec.applicationName}-dbinstance
+        spec:
+          # need to specify the required fields (e.g masterUsername, masterPassword)
+          engine: postgres
+          dbInstanceIdentifier: ${schema.spec.applicationName}-dbinstance
+          allocatedStorage: 20
+          dbInstanceClass: db.t3.micro
+
+    - id: pod
+      definition:
+        apiVersion: v1
+        kind: Pod
+        metadata:
+          name: ${schema.spec.applicationName}-pod
+        spec:
+          containers:
+            - name: container1
+              image: ${schema.spec.image}
+              env:
+                - name: POSTGRESS_ENDPOINT
+                  value: ${dbinstance.status.endpoint.address}
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/web-app-ingress.md b/website/versioned_docs/version-0.2.0/examples/web-app-ingress.md
new file mode 100644
index 0000000..a62430a
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/web-app-ingress.md
@@ -0,0 +1,92 @@
+---
+sidebar_position: 10
+---
+
+# Web Application w/ Ingress
+
+```yaml title="webapp-ingress.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RG (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
diff --git a/website/versioned_docs/version-0.2.0/examples/web-app.md b/website/versioned_docs/version-0.2.0/examples/web-app.md
new file mode 100644
index 0000000..90b8215
--- /dev/null
+++ b/website/versioned_docs/version-0.2.0/examples/web-app.md
@@ -0,0 +1,53 @@
+---
+sidebar_position: 10
+---
+
+# Web Application
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentservice
+spec:
+  apiVersion: v1alpha1
+  kind: DeploymentService
+  definition:
+    spec:
+      name: string
+  resources:
+    - id: deployment
+      definition:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-deployment
+                  image: nginx
+                  ports:
+                    - containerPort: 80
+    - id: service
+      definition:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          selector:
+            app: deployment
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+```
diff --git a/website/versioned_docs/version-0.2.1/docs/concepts/00-resource-group-definitions.md b/website/versioned_docs/version-0.2.1/docs/concepts/00-resource-group-definitions.md
new file mode 100644
index 0000000..89884a3
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/concepts/00-resource-group-definitions.md
@@ -0,0 +1,167 @@
+---
+sidebar_position: 1
+---
+
+# ResourceGraphDefinitions
+
+ResourceGraphDefinitions are the fundamental building blocks in **kro**. They provide a
+way to define, organize, and manage sets of related Kubernetes resources as a
+single, reusable unit.
+
+## What is a ResourceGraphDefinition?
+
+A **ResourceGraphDefinition** is a custom resource that lets you create new Kubernetes
+APIs for deploying multiple resources together. It acts as a blueprint,
+defining:
+
+- What users can configure (schema)
+- What resources to create (resources)
+- How resources reference each other (dependencies)
+- When resources should be included (conditions)
+- What status to expose (status)
+
+When you create a **ResourceGraphDefinition**, kro generates a new API (a.k.a Custom
+Resource Defintion) in your cluster that others can use to deploy resources in a
+consistent, controlled way.
+
+## Anatomy of a ResourceGraphDefinition
+
+A ResourceGraphDefinition, like any Kubernetes resource, consists of three main parts:
+
+1. **Metadata**: name, namespace, labels, etc.
+2. **Spec**: Defines the structure and properties of the ResourceGraphDefinition
+3. **Status**: Reflects the current state of the ResourceGraphDefinition
+
+The `spec` section of a ResourceGraphDefinition contains two main components:
+
+- **Schema**: Defines what an instance of your API looks like:
+  - What users can configure during creation and update
+  - What status information they can view
+  - Default values and validation rules
+- **Resources**: Specifies the Kubernetes resources to create:
+  - Resource templates
+  - Dependencies between resources
+  - Conditions for inclusion
+  - Readiness criteria
+
+This structure translates to YAML as follows:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-resourcegraphdefinition # Metadata section
+spec:
+  schema: # Define your API
+    apiVersion: v1alpha1 # API version
+    kind: MyAPI # API kind
+    spec: {} # fields users can configure
+    status: {} # fields kro will populate
+
+  # Define the resources kro will manage
+  resources:
+    - id: resource1
+      # declare your resources along with default values and variables
+      template: {}
+```
+
+Let's look at each component in detail...
+
+## Understanding the Schema
+
+The schema section defines your new API's structure. It determines:
+
+- What fields users can configure when creating instances
+- What status information they can view
+- Type validation and default values
+
+Here's an example schema:
+
+```yaml
+schema:
+  apiVersion: v1alpha1
+  kind: WebApplication # This becomes your new API type
+  spec:
+    # Fields users can configure using a simple, straightforward syntax
+    name: string
+    image: string | default="nginx"
+    replicas: integer | default=3
+    ingress:
+      enabled: boolean | default=false
+
+  status:
+    # Fields kro will populate automatically from your resources
+    # Types are inferred from these CEL expressions
+    availableReplicas: ${deployment.status.availableReplicas}
+    conditions: ${deployment.status.conditions}
+```
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI spec compatible.
+No need to write complex OpenAPI schemas - just define your fields and types in
+a straightforward way. For the complete specification of this format, check out
+the [Simple Schema specification](./10-simple-schema.md). Status fields use CEL
+expressions to reference fields from resources defined in your ResourceGraphDefinition.
+kro automatically:
+
+- Infers the correct types from your expressions
+- Validates that referenced resources exist
+- Updates these fields as your resources change
+
+## ResourceGraphDefinition Processing
+
+When you create a **ResourceGraphDefinition**, kro processes it in several steps to ensure
+correctness and set up the necessary components:
+
+1. **Validation**: kro validates your **ResourceGraphDefinition** to ensure it's well
+   formed and follows the correct syntax, maximizing the chances of successful
+   deployment, and catching as many errors as possible early on. It:
+
+   - Validates your schema definition follows the simple schema format
+   - Ensures all resource templates are valid Kubernetes manifests
+   - Checks that referenced values exist and are of the correct type
+   - Confirms resource dependencies form a valid Directed Acycled Graph(DAG)
+     without cycles
+   - Validates all CEL expressions in status fields and conditions
+
+2. **API Generation**: kro generates and registers a new CRD in your cluster
+   based on your schema. For example, if your **ResourceGraphDefinition** defines a
+   `WebApplication` API, kro creates a CRD that:
+
+   - Provides API validation based on your schema definition
+   - Automatically applies default values you've defined
+   - Makes status information available to users and other systems
+   - Integrates seamlessly with kubectl and other Kubernetes tools
+
+3. **Controller Configuration**: kro configures itself to watch for instances of
+   your new API and:
+
+   - Creates all required resources following the dependency order
+   - Manages references and value passing between resources
+   - Handles the complete lifecycle for create, update, and delete operations
+   - Keeps status information up to date based on actual resource states
+
+For instance, when you create a `WebApplication` ResourceGraphDefinition, kro generates
+the `webapplications.kro.run` CRD. When users create instances of this API, kro
+manages all the underlying resources (Deployments, Services, Custom Resources,
+etc.) automatically.
+
+kro continuously monitors your ResourceGraphDefinition for changes, updating the API and
+its behavior accordingly.
+
+## ResourceGraphDefinition Instance Example
+
+After the **ResourceGraphDefinition** is validated and registered in the cluster, users
+can can create instances of it. Here's an example of how an instance for the
+`SimpleWebApp` might look:
+
+```yaml title="my-web-app-instance.yaml"
+apiVersion: kro.run/v1alpha1
+kind: SimpleWebApp
+metadata:
+  name: my-web-app
+spec:
+  appName: awesome-app
+  image: nginx:latest
+  replicas: 3
+```
diff --git a/website/versioned_docs/version-0.2.1/docs/concepts/10-simple-schema.md b/website/versioned_docs/version-0.2.1/docs/concepts/10-simple-schema.md
new file mode 100644
index 0000000..62db74f
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/concepts/10-simple-schema.md
@@ -0,0 +1,194 @@
+---
+sidebar_position: 2
+---
+
+# Simple Schema
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI specification
+compatible. Here's a comprehensive example:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: web-application
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: WebApplication
+    spec:
+      # Basic types
+      name: string | required=true description="My Name"
+      replicas: integer | default=1 minimum=1 maximum=100
+      image: string | required=true
+
+      # Structured type
+      ingress:
+        enabled: boolean | default=false
+        host: string | default="example.com"
+        path: string | default="/"
+
+      # Array type
+      ports: "[]integer"
+
+      # Map type
+      env: "map[string]string"
+
+    status:
+      # Status fields with auto-inferred types
+      availableReplicas: ${deployment.status.availableReplicas}
+      serviceEndpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Type Definitions
+
+### Basic Types
+
+kro supports these foundational types:
+
+- `string`: Text values
+- `integer`: Whole numbers
+- `boolean`: True/False values
+- `number`: Decimal numbers
+
+For example:
+
+```yaml
+name: string
+age: integer
+enabled: boolean
+price: number
+```
+
+### Structure Types
+
+You can create complex objects by nesting fields. Each field can use any type,
+including other structures:
+
+```yaml
+# Simple structure
+address:
+  street: string
+  city: string
+  zipcode: string
+
+# Nested structures
+user:
+  name: string
+  address: # Nested object
+    street: string
+    city: string
+  contacts: "[]string" # Array of strings
+```
+
+### Array Types
+
+Arrays are denoted using `[]` syntax:
+
+- Basic arrays: `[]string`, `[]integer`, `[]boolean`
+
+Examples:
+
+```yaml
+tags: []string
+ports: []integer
+```
+
+### Map Types
+
+Maps are key-value pairs denoted as `map[keyType]valueType`:
+
+- `map[string]string`: String to string mapping
+- `map[string]integer`: String to integer mapping
+
+Examples:
+
+```yaml
+labels: "map[string]string"
+metrics: "map[string]number"
+```
+
+## Validation and Documentation
+
+Fields can have multiple markers for validation and documentation:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+### Supported Markers
+
+- `required=true`: Field must be provided
+- `default=value`: Default value if not specified
+- `description="..."`: Field documentation
+- `enum="value1,value2"`: Allowed values
+- `minimum=value`: Minimum value for numbers
+- `maximum=value`: Maximum value for numbers
+
+Multiple markers can be combined using the `|` separator.
+
+For example:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+```
+
+## Status Fields
+
+Status fields use CEL expressions to reference values from resources. kro
+automatically:
+
+- Infers the correct types from the expressions
+- Validates that referenced resources exist
+- Updates values when the underlying resources change
+
+```yaml
+status:
+  # Types are inferred from the referenced fields
+  availableReplicas: ${deployment.status.availableReplicas}
+  endpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Default Status Fields
+
+kro automatically injects two fields to every instance's status:
+
+### 1. Conditions
+
+An array of condition objects tracking the instance's state:
+
+```yaml
+status:
+  conditions:
+    - type: string # e.g., "Ready", "Progressing"
+      status: string # "True", "False", "Unknown"
+      lastTransitionTime: string
+      reason: string
+      message: string
+```
+
+Common condition types:
+
+- `Ready`: Instance is fully reconciled
+- `Progressing`: Working towards desired state
+- `Degraded`: Operational but not optimal
+- `Error`: Reconciliation error occurred
+
+### 2. State
+
+A high-level summary of the instance's status:
+
+```yaml
+status:
+  state: string # Ready, Progressing, Degraded, Unknown, Deleting
+```
+
+:::tip
+
+`conditions` and `state` are reserved words. If defined in your schema, kro will
+override them with its own values.
+
+:::
diff --git a/website/versioned_docs/version-0.2.1/docs/concepts/15-instances.md b/website/versioned_docs/version-0.2.1/docs/concepts/15-instances.md
new file mode 100644
index 0000000..eb9f575
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/concepts/15-instances.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 15
+---
+
+# Instances
+
+Once **kro** processes your ResourceGraphDefinition, it creates a new API in your cluster.
+Users can then create instances of this API to deploy resources in a consistent,
+controlled way.
+
+## Understanding Instances
+
+An instance represents your deployed application. When you create an instance,
+you're telling kro "I want this set of resources running in my cluster". The
+instance contains your configuration values and serves as the single source of
+truth for your application's desired state. Here's an example instance of our
+WebApplication API:
+
+```yaml
+apiVersion: v1alpha1
+kind: WebApplication
+metadata:
+  name: my-app
+spec:
+  name: web-app
+  image: nginx:latest
+  ingress:
+    enabled: true
+```
+
+When you create this instance, kro:
+
+- Creates all required resources (Deployment, Service, Ingress)
+- Configures them according to your specification
+- Manages them as a single unit
+- Keeps their status up to date
+
+## How kro Manages Instances
+
+kro uses the standard Kubernetes reconciliation pattern to manage instances:
+
+1. **Observe**: Watches for changes to your instance or its resources
+2. **Compare**: Checks if current state matches desired state
+3. **Act**: Creates, updates, or deletes resources as needed
+4. **Report**: Updates status to reflect current state
+
+This continuous loop ensures your resources stay in sync with your desired
+state, providing features like:
+
+- Self-healing
+- Automatic updates
+- Consistent state management
+- Status tracking
+
+## Monitoring Your Instances
+
+KRO provides rich status information for every instance:
+
+```bash
+$ kubectl get webapplication my-app
+NAME     STATUS    SYNCED   AGE
+my-app   ACTIVE    true     30s
+```
+
+For detailed status, check the instance's YAML:
+
+```yaml
+status:
+  state: ACTIVE # High-level instance state
+  availableReplicas: 3 # Status from Deployment
+  conditions: # Detailed status conditions
+    - type: Ready
+      status: "True"
+      lastTransitionTime: "2024-07-23T01:01:59Z"
+      reason: ResourcesAvailable
+      message: "All resources are available and configured correctly"
+```
+
+### Understanding Status
+
+Every instance includes:
+
+1. **State**: High-level status
+
+   - `Running`: All resources are ready
+   - `Progressing`: Working towards desired state
+   - `Failed`: Error occurred
+   - `Terminating`: Being deleted
+
+2. **Conditions**: Detailed status information
+
+   - `Ready`: Instance is fully operational
+   - `Progressing`: Changes are being applied
+   - `Degraded`: Operating but not optimal
+   - `Error`: Problems detected
+
+3. **Resource Status**: Status from your resources
+   - Values you defined in your ResourceGraphDefinition's status section
+   - Automatically updated as resources change
+
+## Best Practices
+
+- **Version Control**: Keep your instance definitions in version control
+  alongside your application code. This helps track changes, rollback when
+  needed, and maintain configuration history.
+
+- **Use Labels Effectively**: Add meaningful labels to your instances for better
+  organization, filtering, and integration with other tools. kro propagates
+  labels to the sub resources for easy identification.
+
+- **Active Monitoring**: Regularly check instance status beyond just "Running".
+  Watch conditions, resource status, and events to catch potential issues early
+  and understand your application's health.
+
+- **Regular Reviews**: Periodically review your instance configurations to
+  ensure they reflect current requirements and best practices. Update resource
+  requests, limits, and other configurations as your application needs evolve.
diff --git a/website/versioned_docs/version-0.2.1/docs/concepts/_category_.json b/website/versioned_docs/version-0.2.1/docs/concepts/_category_.json
new file mode 100644
index 0000000..8d8506e
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/concepts/_category_.json
@@ -0,0 +1,9 @@
+{
+  "label": "Concepts",
+  "position": 40,
+  "link": {
+    "description": "Learn about the core concepts of kro"
+  },
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.2.1/docs/faq.md b/website/versioned_docs/version-0.2.1/docs/faq.md
new file mode 100644
index 0000000..84bdb51
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/faq.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: "FAQ"
+sidebar_position: 100
+---
+
+# FAQ
+
+1. **What is kro?**
+
+   Kube Resource Orchestrator (**kro**) is a new operator for Kubernetes that
+   simplifies the creation of complex Kubernetes resource configurations. kro
+   lets you create and manage custom groups of Kubernetes resources by defining
+   them as a _ResourceGraphDefinition_, the project's fundamental custom resource.
+   ResourceGraphDefinition specifications define a set of resources and how they relate to
+   each other functionally. Once defined, resource groups can be applied to a
+   Kubernetes cluster where the kro controller is running. Once validated by
+   kro, you can create instances of your resource group. kro translates your
+   ResourceGraphDefinition instance and its parameters into specific Kubernetes resources
+   and configurations which it then manages for you.
+
+2. **How does kro work?**
+
+   kro is designed to use core Kubernetes primitives to make resource grouping,
+   customization, and dependency management simpler. When a ResourceGraphDefinition is
+   applied to the cluster, the kro controller verifies its specification, then
+   dynamically creates a new CRD and registers it with the API server. kro then
+   deploys a dedicated controller to respond to instance events on the CRD. This
+   microcontroller is responsible for managing the lifecycle of resources
+   defined in the ResourceGraphDefinition for each instance that is created.
+
+3. **How do I use kro?**
+
+   First, you define your custom resource groups by creating _ResourceGraphDefinition_
+   specifications. These specify one or more Kubernetes resources, and can
+   include specific configuration for each resource.
+
+   For example, you can define a _WebApp_ resource group that is composed of a
+   _Deployment_, pre-configured to deploy your web server backend, and a
+   _Service_ configured to run on a specific port. You can just as easily create
+   a more complex _WebAppWithDB_ resource group by combining the existing
+   _WebApp_ resource group with a _Table_ custom resource to provision a cloud
+   managed database instance for your web app to use.
+
+   Once you have defined a ResourceGraphDefinition, you can apply it to a Kubernetes
+   cluster where the kro controller is running. kro will take care of the heavy
+   lifting of creating CRDs and deploying dedicated controllers in order to
+   manage instances of your new custom resource group.
+
+   You are now ready to create instances of your new custom resource group, and
+   kro will respond by dynamically creating, configuring, and managing the
+   underlying Kubernetes resources for you.
+
+4. **Why did you build this project?**
+
+   We want to help streamline and simplify building with Kubernetes. Building
+   with Kubernetes means dealing with resources that need to operate and work
+   together, and orchestrating this can get complex and difficult at scale. With
+   this project, we're taking a first step in reducing the complexity of
+   resource dependency management and customization, paving the way for a simple
+   and scalable way to create complex custom resources for Kubernetes.
+
+5. **Can I use this in production?**
+
+   This project is in active development and not yet intended for production
+   use. The _ResourceGraphDefinition_ CRD and other APIs used in this project are not
+   solidified and highly subject to change.
diff --git a/website/versioned_docs/version-0.2.1/docs/getting-started/01-Installation.md b/website/versioned_docs/version-0.2.1/docs/getting-started/01-Installation.md
new file mode 100644
index 0000000..b159df0
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/getting-started/01-Installation.md
@@ -0,0 +1,110 @@
+---
+sidebar_position: 1
+---
+
+# Installing kro
+
+This guide walks you through the process of installing kro on your Kubernetes
+cluster using Helm.
+
+## Prerequisites
+
+Before you begin, ensure you have the following:
+
+1. `Helm` 3.x installed
+2. `kubectl` installed and configured to interact with your Kubernetes cluster
+
+## Installation Steps
+
+:::info[**Alpha Stage**]
+
+kro is currently in alpha stage. While the images are publicly available, please
+note that the software is still under active development and APIs may change.
+
+:::
+
+### Install kro using Helm
+
+Once authenticated, install kro using the Helm chart:
+
+Fetch the latest release version from GitHub
+```sh
+export KRO_VERSION=$(curl -sL \
+    https://api.github.com/repos/kro-run/kro/releases/latest | \
+    jq -r '.tag_name | ltrimstr("v")'
+  )
+```
+Validate `KRO_VERSION` populated with a version
+```
+echo $KRO_VERSION
+```
+Install kro using Helm
+```
+helm install kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --create-namespace \
+  --version=${KRO_VERSION}
+```
+
+## Verifying the Installation
+
+After running the installation command, verify that Kro has been installed
+correctly:
+
+1. Check the Helm release:
+
+   ```sh
+   helm -n kro list
+   ```
+
+   Expected result: You should see the "kro" release listed.
+   ```
+    NAME	NAMESPACE	REVISION	STATUS  
+    kro 	kro      	1       	deployed
+   ```
+
+2. Check the kro pods:
+   ```sh
+   kubectl get pods -n kro
+   ```
+   Expected result: You should see kro-related pods running.
+   ```
+    NAME                        READY   STATUS             RESTARTS   AGE
+    kro-7d98bc6f46-jvjl5        1/1     Running            0           1s 
+   ```
+
+## Upgrading kro
+
+To upgrade to a newer version of kro, use the Helm upgrade command:
+
+Replace `<new-version>` with the version you want to upgrade to.
+```bash
+export KRO_VERSION=<new-version>
+```
+
+Upgrade the controller
+```
+helm upgrade kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --version=${KRO_VERSION}
+```
+
+:::info[**CRD Updates**]
+
+Helm does not support updating CRDs, so you may need to manually update or
+remove and re-apply kro related CRDs. For more information, refer to the Helm
+documentation.
+
+:::
+
+## Uninstalling kro
+
+To uninstall kro, use the following command:
+
+```bash
+helm uninstall kro -n kro
+```
+
+Keep in mind that this command will remove all kro resources from your cluster,
+except for the ResourceGraphDefinition CRD and any other custom resources you may have
+created.
diff --git a/website/versioned_docs/version-0.2.1/docs/getting-started/02-deploy-a-resource-graph-definition.md b/website/versioned_docs/version-0.2.1/docs/getting-started/02-deploy-a-resource-graph-definition.md
new file mode 100644
index 0000000..58bc12c
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/getting-started/02-deploy-a-resource-graph-definition.md
@@ -0,0 +1,227 @@
+---
+sidebar_position: 2
+---
+
+# Deploy Your First ResourceGraphDefinition
+
+This guide will walk you through creating your first Resource Graph Definition in **kro**.
+We'll create a simple `ResourceGraphDefinition` that demonstrates key kro features.
+
+## What is a **ResourceGraphDefinition**?
+
+A `ResourceGraphDefinition` lets you create new Kubernetes APIs that deploy multiple
+resources together as a single, reusable unit. In this example, we’ll create a
+`ResourceGraphDefinition` that packages a reusable set of resources, including a
+`Deployment`, `Service`, and `Ingress`. These resources are available in any
+Kubernetes cluster. Users can then call the API to deploy resources as a single
+unit, ensuring they're always created together with the right configuration.
+
+Under the hood, when you create a `ResourceGraphDefinition`, kro:
+
+1. Treats your resources as a Directed Acyclic Graph (DAG) to understand their
+   dependencies
+2. Validates resource definitions and detects the correct deployment order
+3. Creates a new API (CRD) in your cluster
+4. Configures itself to watch and serve instances of this API
+
+## Prerequisites
+
+Before you begin, make sure you have the following:
+
+- **kro** [installed](./01-Installation.md) and running in your Kubernetes
+  cluster.
+- `kubectl` installed and configured to interact with your Kubernetes cluster.
+
+## Create your Application ResourceGraphDefinition
+
+Let's create a Resource Graph Definition that combines a `Deployment`, a `Service` and
+`Ingress`. Save this as `resourcegraphdefinition.yaml`:
+
+```yaml title="resourcegraphdefinition.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
+
+### Deploy the ResourceGraphDefinition
+
+1. **Create a ResourceGraphDefinition manifest file**: Create a new file with the
+   `ResourceGraphDefinition` definition. You can use the example above.
+
+2. **Apply the `ResourceGraphDefinition`**: Use the `kubectl` command to deploy the
+   ResourceGraphDefinition to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f resourcegraphdefinition.yaml
+   ```
+
+3. **Inpsect the `ResourceGraphDefinition`**: Check the status of the resources created by
+   the ResourceGraphDefinition using the `kubectl` command:
+
+   ```bash
+   kubectl get rgd my-application -owide
+   ```
+
+   You should see the ResourceGraphDefinition in the `Active` state, along with relevant
+   information to help you understand your application:
+
+   ```bash
+   NAME             APIVERSION   KIND          STATE    TOPOLOGICALORDER                     AGE
+   my-application   v1alpha1     Application   Active   ["deployment","service","ingress"]   49
+   ```
+
+### Create your Application Instance
+
+Now that your `ResourceGraphDefinition` is created, kro has generated a new API
+(Application) that orchestrates creation of the a `Deployment`, a `Service`, and
+an `Ingress`. Let's use it!
+
+1. **Create an Application instance**: Create a new file named `instance.yaml`
+   with the following content:
+
+   ```yaml title="instance.yaml"
+   apiVersion: kro.run/v1alpha1
+   kind: Application
+   metadata:
+     name: my-application-instance
+   spec:
+     name: my-awesome-app
+     ingress:
+       enabled: true
+   ```
+
+2. **Apply the Application instance**: Use the `kubectl` command to deploy the
+   Application instance to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f instance.yaml
+   ```
+
+3. **Inspect the Application instance**: Check the status of the resources
+
+   ```bash
+   kubectl get applications
+   ```
+
+   After a few seconds, you should see the Application instance in the `Active`
+   state:
+
+   ```bash
+   NAME                      STATE    SYNCED   AGE
+   my-application-instance   ACTIVE   True     10s
+   ```
+
+4. **Inspect the resources**: Check the resources created by the Application
+   instance:
+
+   ```bash
+   kubectl get deployments,services,ingresses
+   ```
+
+   You should see the `Deployment`, `Service`, and `Ingress` created by the
+   Application instance.
+
+   ```bash
+   NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
+   deployment.apps/my-awesome-app   3/3     3            3           69s
+
+   NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
+   service/my-awesome-app-service   ClusterIP   10.100.167.72   <none>        80/TCP    65s
+
+   NAME                                               CLASS    HOSTS   ADDRESS   PORTS   AGE
+   ingress.networking.k8s.io/my-awesome-app-ingress   <none>   *                 80      62s
+   ```
+
+### Delete the Application instance
+
+kro can also help you clean up resources when you're done with them.
+
+1. **Delete the Application instance**: Clean up the resources by deleting the
+   Application instance:
+
+   ```bash
+   kubectl delete application my-application-instance
+   ```
+
+   Now, the resources created by the Application instance will be deleted.
diff --git a/website/versioned_docs/version-0.2.1/docs/getting-started/_category_.json b/website/versioned_docs/version-0.2.1/docs/getting-started/_category_.json
new file mode 100644
index 0000000..723093d
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/getting-started/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Getting started",
+  "position": 20,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.2.1/docs/overview.md b/website/versioned_docs/version-0.2.1/docs/overview.md
new file mode 100644
index 0000000..c42e2f3
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/overview.md
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams, can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.2.1/docs/overview.md.bak b/website/versioned_docs/version-0.2.1/docs/overview.md.bak
new file mode 100644
index 0000000..c42e2f3
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/docs/overview.md.bak
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams, can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.2.1/examples/aws/ack-eks-cluster.md b/website/versioned_docs/version-0.2.1/examples/aws/ack-eks-cluster.md
new file mode 100644
index 0000000..6de9c75
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/aws/ack-eks-cluster.md
@@ -0,0 +1,222 @@
+---
+sidebar_position: 302
+---
+
+# EKS Cluster
+
+```yaml title="eks.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscluster.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSCluster
+    spec:
+      name: string
+      version: string
+    status:
+      networkingInfo:
+        vpcID: ${clusterVPC.status.vpcID}
+        subnetAZA: ${clusterSubnetA.status.subnetID}
+        subnetAZB: ${clusterSubnetB.status.subnetID}
+      clusterARN: ${cluster.status.ackResourceMetadata.arn}
+  # resources
+  resources:
+    - id: clusterVPC
+      readyWhen:
+        - ${clusterVPC.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: kro-cluster-vpc
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSSupport: true
+          enableDNSHostnames: true
+    - id: clusterElasticIPAddress
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: ElasticIPAddress
+        metadata:
+          name: kro-cluster-eip
+        spec: {}
+    - id: clusterInternetGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: InternetGateway
+        metadata:
+          name: kro-cluster-igw
+        spec:
+          vpc: ${clusterVPC.status.vpcID}
+    - id: clusterRouteTable
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: RouteTable
+        metadata:
+          name: kro-cluster-public-route-table
+        spec:
+          vpcID: ${clusterVPC.status.vpcID}
+          routes:
+            - destinationCIDRBlock: 0.0.0.0/0
+              gatewayID: ${clusterInternetGateway.status.internetGatewayID}
+    - id: clusterSubnetA
+      readyWhen:
+        - ${clusterSubnetA.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet1
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterSubnetB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet2
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterNATGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: NATGateway
+        metadata:
+          name: kro-cluster-natgateway1
+        spec:
+          subnetID: ${clusterSubnetB.status.subnetID}
+          allocationID: ${clusterElasticIPAddress.status.allocationID}
+    - id: clusterRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-role
+        spec:
+          name: kro-cluster-role
+          description: "kro created cluster cluster role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "eks.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterNodeRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-node-role
+        spec:
+          name: kro-cluster-node-role
+          description: "kro created cluster node role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
+            - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
+            - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "ec2.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterAdminRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-pia-role
+        spec:
+          name: kro-cluster-pia-role
+          description: "kro created cluster admin pia role"
+          policies:
+            - arn:aws:iam::aws:policy/AdministratorAccess
+          assumeRolePolicyDocument: |
+            {
+                "Version": "2012-10-17",
+                "Statement": [
+                    {
+                        "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
+                        "Effect": "Allow",
+                        "Principal": {
+                            "Service": "pods.eks.amazonaws.com"
+                        },
+                        "Action": [
+                            "sts:AssumeRole",
+                            "sts:TagSession"
+                        ]
+                    }
+                ]
+            }
+    - id: cluster
+      readyWhen:
+        - ${cluster.status.status == "ACTIVE"}
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Cluster
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          name: ${schema.spec.name}
+          accessConfig:
+            authenticationMode: API_AND_CONFIG_MAP
+          roleARN: ${clusterRole.status.ackResourceMetadata.arn}
+          version: ${schema.spec.version}
+          resourcesVPCConfig:
+            endpointPrivateAccess: false
+            endpointPublicAccess: true
+            subnetIDs:
+              - ${clusterSubnetA.status.subnetID}
+              - ${clusterSubnetB.status.subnetID}
+    - id: clusterNodeGroup
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Nodegroup
+        metadata:
+          name: kro-cluster-nodegroup
+        spec:
+          name: kro-cluster-ng
+          diskSize: 100
+          clusterName: ${cluster.spec.name}
+          subnets:
+            - ${clusterSubnetA.status.subnetID}
+            - ${clusterSubnetB.status.subnetID}
+          nodeRole: ${clusterNodeRole.status.ackResourceMetadata.arn}
+          updateConfig:
+            maxUnavailable: 1
+          scalingConfig:
+            minSize: 1
+            maxSize: 1
+            desiredSize: 1
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/aws/ack-networking-stack.md b/website/versioned_docs/version-0.2.1/examples/aws/ack-networking-stack.md
new file mode 100644
index 0000000..f388171
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/aws/ack-networking-stack.md
@@ -0,0 +1,79 @@
+---
+sidebar_position: 303
+---
+
+# Networking Stack
+
+```yaml title="networking-stack.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: networkingstack.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: NetworkingStack
+    spec:
+      name: string
+    status:
+      networkingInfo:
+        vpcID: ${vpc.status.vpcID}
+        subnetAZA: ${subnetAZA.status.subnetID}
+        subnetAZB: ${subnetAZB.status.subnetID}
+        subnetAZC: ${subnetAZC.status.subnetID}
+        securityGroup: ${securityGroup.status.id}
+  # resources
+  resources:
+    - id: vpc
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: vpc-${schema.spec.name}
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSHostnames: false
+          enableDNSSupport: true
+    - id: subnetAZA
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-a-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-b-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZC
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-c-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2c
+          cidrBlock: 192.168.128.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: securityGroup
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: cluster-security-group-${schema.spec.name}
+        spec:
+          vpcID: ${vpc.status.vpcID}
+          name: my-sg-${schema.spec.name}
+          description: something something
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/aws/ack-valkey-cachecluster.md b/website/versioned_docs/version-0.2.1/examples/aws/ack-valkey-cachecluster.md
new file mode 100644
index 0000000..46c0b53
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/aws/ack-valkey-cachecluster.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 304
+---
+
+# Valkey cluster
+
+```yaml title="valkey-cachecluster.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: valkey.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: Valkey
+    spec:
+      name: string
+    status:
+      csgARN: ${cacheSubnetGroup.status.ackResourceMetadata.arn}
+      subnets: ${cacheSubnetGroup.status.subnets}
+      clusterARN: ${valkey.status.ackResourceMetadata.arn}
+  resources:
+    - id: networkingStack
+      template:
+        apiVersion: kro.run/v1alpha1
+        kind: NetworkingStack
+        metadata:
+          name: ${schema.spec.name}-networking-stack
+        spec:
+          name: ${schema.spec.name}-networking-stack
+    - id: cacheSubnetGroup
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheSubnetGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-subnet-group
+        spec:
+          cacheSubnetGroupDescription: "Valkey ElastiCache subnet group"
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          subnetIDs:
+            - ${networkingStack.status.networkingInfo.subnetAZA}
+            - ${networkingStack.status.networkingInfo.subnetAZB}
+            - ${networkingStack.status.networkingInfo.subnetAZC}
+    - id: sg
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-sg
+        spec:
+          name: ${schema.spec.name}-valkey-sg
+          description: "Valkey ElastiCache security group"
+          vpcID: ${networkingStack.status.networkingInfo.vpcID}
+          ingressRules:
+            - fromPort: 6379
+              toPort: 6379
+              ipProtocol: tcp
+              ipRanges:
+                - cidrIP: 0.0.0.0/0
+    - id: valkey
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheCluster
+        metadata:
+          name: ${schema.spec.name}-valkey
+        spec:
+          cacheClusterID: vote-valkey-cluster
+          cacheNodeType: cache.t3.micro
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          engine: valkey
+          engineVersion: "8.x"
+          numCacheNodes: 1
+          port: 6379
+          securityGroupIDs:
+            - ${sg.status.id}
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/aws/aws-examples.md b/website/versioned_docs/version-0.2.1/examples/aws/aws-examples.md
new file mode 100644
index 0000000..d977b36
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/aws/aws-examples.md
@@ -0,0 +1,24 @@
+---
+sidebar_position: 301
+---
+
+# AWS Examples
+- [Deploying a Controller](./deploying-controller.md) Discover how to deploy a
+  Kubernetes controller using kro ResourceGraphDefinitions, including the necessary
+  Deployment, ServiceAccount, and CRDs.
+
+- [AWS Networking Stack](./ack-networking-stack.md) Learn how to define and
+  manage an AWS networking stack using kro ResourceGraphDefinitions, including VPCs,
+  subnets, and security groups.
+
+- [EKS Cluster with ACK CRDs](./ack-eks-cluster.md) Explore how to define and
+  manage an EKS cluster using AWS Controllers for Kubernetes (ACK) CRDs within a
+  kro ResourceGraphDefinition.
+
+- [Valkey CacheCluster with ACK CRDs](./ack-valkey-cachecluster.md) Learn how to
+  create and configure a Valkey CacheCluster using ACK CRDs in a kro
+  ResourceGraphDefinition.
+
+- [Pod and RDS DBInstance](./pod-rds-dbinstance.md) Deploy a Pod and an RDS
+  DBInstance in a kro ResourceGraphDefinition, showcasing the use of multiple resources
+  with dependencies.
diff --git a/website/versioned_docs/version-0.2.1/examples/aws/category.json b/website/versioned_docs/version-0.2.1/examples/aws/category.json
new file mode 100644
index 0000000..ce984a9
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/aws/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "AWS Examples",
+  "position": 300,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with AWS"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
diff --git a/website/versioned_docs/version-0.2.1/examples/aws/deploying-controller.md b/website/versioned_docs/version-0.2.1/examples/aws/deploying-controller.md
new file mode 100644
index 0000000..331fe1a
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/aws/deploying-controller.md
@@ -0,0 +1,297 @@
+---
+sidebar_position: 305
+---
+
+# Controller Deployment
+
+```yaml title="controller-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscontrollers.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSController
+    spec:
+      name: string | default=eks-controller
+      namespace: string | default=default
+      values:
+        aws:
+          accountID: string | required=true
+          region: string | default=us-west-2
+        deployment:
+          containerPort: integer | default=8080
+          replicas: integer | default=1
+        iamRole:
+          maxSessionDuration: integer | default=3600
+          oidcProvider: string | required=true
+          roleDescription: string | default=IRSA role for ACK EKS controller deployement on EKS cluster using kro Resource group
+        iamPolicy:
+          # would prefer to add a policyDocument here, need to support multiline string here
+          description: string | default="policy for eks controller"
+        image:
+          deletePolicy: string | default=delete
+          repository: string | default=public.ecr.aws/aws-controllers-k8s/eks-controller
+          tag: string | default=1.4.7
+          resources:
+            requests:
+              memory: string | default=64Mi
+              cpu: string | default=50m
+            limits:
+              memory: string | default=128Mi
+              cpu: string | default=100m
+        log:
+          enabled: boolean | default=false
+          level: string | default=info
+        serviceAccount:
+          name: string | default=eks-controller-sa
+  resources:
+  - id: eksCRDGroup
+    template:
+      apiVersion: kro.run/v1alpha1
+      kind: EKSCRDGroup
+      metadata:
+        name: ${schema.spec.name}-crd-group
+      spec:
+        name: ${schema.spec.name}-crd-group
+  - id: eksControllerIamPolicy
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Policy
+      metadata:
+        name: ${schema.spec.name}-iam-policy
+      spec:
+        name: ${schema.spec.name}-iam-policy
+        description: ${schema.spec.values.iamPolicy.description}
+        policyDocument: >
+          {
+            "Version": "2012-10-17",
+            "Statement": [
+              {
+                "Sid": "VisualEditor0",
+                "Effect": "Allow",
+                "Action": [
+                  "eks:*",
+                  "iam:GetRole",
+                  "iam:PassRole",
+                  "iam:ListAttachedRolePolicies",
+                  "ec2:DescribeSubnets"
+                ],
+                "Resource": "*"
+              }
+            ]
+          }
+  - id: eksControllerIamRole
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Role
+      metadata:
+        name: ${schema.spec.name}-iam-role
+        namespace: ${schema.spec.namespace}
+      spec:
+        name: ${schema.spec.name}-iam-role
+        description: ${schema.spec.values.iamRole.roleDescription}
+        maxSessionDuration: ${schema.spec.values.iamRole.maxSessionDuration}
+        policies:
+        - ${eksControllerIamPolicy.status.ackResourceMetadata.arn}
+        assumeRolePolicyDocument: >
+          {
+            "Version":"2012-10-17",
+            "Statement": [{
+              "Effect":"Allow",
+              "Principal": {"Federated": "arn:aws:iam::${schema.spec.values.aws.accountID}:oidc-provider/${schema.spec.values.iamRole.oidcProvider}"},
+              "Action": ["sts:AssumeRoleWithWebIdentity"],
+              "Condition": {
+                "StringEquals": {"${schema.spec.values.iamRole.oidcProvider}:sub": "system:serviceaccount:${schema.spec.namespace}:${schema.spec.values.serviceAccount.name}"}
+              }
+            }]
+          }
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.values.serviceAccount.name}
+        namespace: ${schema.spec.namespace}
+        annotations:
+          eks.amazonaws.com/role-arn : ${eksControllerIamRole.status.ackResourceMetadata.arn}
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        name: ${schema.spec.name}-deployment
+        namespace: ${schema.spec.namespace}
+        labels:
+          app.kubernetes.io.name: ${schema.spec.name}-deployment
+          app.kubernetes.io.instance: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels:
+            app.kubernetes.io.name: ${schema.spec.name}-deployment
+            app.kubernetes.io.instance: ${schema.spec.name}
+        template:
+          metadata:
+            labels:
+              app.kubernetes.io.name: ${schema.spec.name}-deployment
+              app.kubernetes.io.instance: ${schema.spec.name}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - command:
+              - ./bin/controller
+              args:
+              - --aws-region
+              - ${schema.spec.values.aws.region}
+              - --enable-development-logging=${schema.spec.values.log.enabled}
+              - --log-level
+              - ${schema.spec.values.log.level}
+              - --deletion-policy
+              - ${schema.spec.values.image.deletePolicy}
+              - --watch-namespace
+              - ${schema.spec.namespace}
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              name: controller
+              ports:
+                - name: http
+                  containerPort: ${schema.spec.values.deployment.containerPort}
+              resources:
+                requests:
+                  memory: ${schema.spec.values.image.resources.requests.memory}
+                  cpu: ${schema.spec.values.image.resources.requests.cpu}
+                limits:
+                    memory: ${schema.spec.values.image.resources.limits.memory}
+                    cpu: ${schema.spec.values.image.resources.limits.cpu}
+              env:
+              - name: ACK_SYSTEM_NAMESPACE
+                value: ${schema.spec.namespace}
+              - name: AWS_REGION
+                value: ${schema.spec.values.aws.region}
+              - name: DELETE_POLICY
+                value: ${schema.spec.values.image.deletePolicy}
+              - name: ACK_LOG_LEVEL
+                value: ${schema.spec.values.log.level}
+              ports:
+              - containerPort: 80
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}-clusterrolebinding
+      roleRef:
+        kind: ClusterRole
+        apiGroup: rbac.authorization.k8s.io
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}-clusterrole
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - configmaps
+        - secrets
+        verbs:
+        - get
+        - list
+        - patch
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - namespaces
+        verbs:
+        - get
+        - list
+        - watch
+      - apiGroups:
+        - ec2.services.k8s.aws
+        resources:
+        - securitygroups
+        - securitygroups/status
+        - subnets
+        - subnets/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries
+        - addons
+        - clusters
+        - fargateprofiles
+        - identityproviderconfigs
+        - nodegroups
+        - podidentityassociations
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries/status
+        - addons/status
+        - clusters/status
+        - fargateprofiles/status
+        - identityproviderconfigs/status
+        - nodegroups/status
+        - podidentityassociations/status
+        verbs:
+        - get
+        - patch
+        - update
+      - apiGroups:
+        - iam.services.k8s.aws
+        resources:
+        - roles
+        - roles/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - kms.services.k8s.aws
+        resources:
+        - keys
+        - keys/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources
+        - fieldexports
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources/status
+        - fieldexports/status
+        verbs:
+        - get
+        - patch
+        - update
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/aws/pod-rds-dbinstance.md b/website/versioned_docs/version-0.2.1/examples/aws/pod-rds-dbinstance.md
new file mode 100644
index 0000000..3b06711
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/aws/pod-rds-dbinstance.md
@@ -0,0 +1,50 @@
+---
+sidebar_position: 306
+---
+
+# Pod with RDS DBInstance
+
+```yaml title="deploymentdbinstance-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentandawspostgres
+spec:
+  # CRD Definition
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentAndAWSPostgres
+    spec:
+      applicationName: string
+      image: string
+      location: string
+
+  # Resources
+  resources:
+    - id: dbinstance
+      template:
+        apiVersion: rds.services.k8s.aws/v1alpha1
+        kind: DBInstance
+        metadata:
+          name: ${schema.spec.applicationName}-dbinstance
+        spec:
+          # need to specify the required fields (e.g masterUsername, masterPassword)
+          engine: postgres
+          dbInstanceIdentifier: ${schema.spec.applicationName}-dbinstance
+          allocatedStorage: 20
+          dbInstanceClass: db.t3.micro
+
+    - id: pod
+      template:
+        apiVersion: v1
+        kind: Pod
+        metadata:
+          name: ${schema.spec.applicationName}-pod
+        spec:
+          containers:
+            - name: container1
+              image: ${schema.spec.image}
+              env:
+                - name: POSTGRESS_ENDPOINT
+                  value: ${dbinstance.status.endpoint.address}
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/azure/category.json b/website/versioned_docs/version-0.2.1/examples/azure/category.json
new file mode 100644
index 0000000..2298240
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/azure/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Azure Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Microsoft Azure"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.2.1/examples/basic/category.json b/website/versioned_docs/version-0.2.1/examples/basic/category.json
new file mode 100644
index 0000000..0216728
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/basic/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Basic Examples",
+  "position": 100,
+  "link": {
+    "type": "generated-index",
+    "description": "Basic examples to get started with Kro"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.2.1/examples/basic/noop.md b/website/versioned_docs/version-0.2.1/examples/basic/noop.md
new file mode 100644
index 0000000..3258bcb
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/basic/noop.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 101
+---
+
+# Empty ResourceGraphDefinition
+
+```yaml title="noop.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: noop
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: NoOp
+    spec:
+      name: string | required=true
+  resources: []
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/basic/web-app-ingress.md b/website/versioned_docs/version-0.2.1/examples/basic/web-app-ingress.md
new file mode 100644
index 0000000..2767fca
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/basic/web-app-ingress.md
@@ -0,0 +1,92 @@
+---
+sidebar_position: 102
+---
+
+# Web Application w/ Ingress
+
+```yaml title="webapp-ingress.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/basic/web-app.md b/website/versioned_docs/version-0.2.1/examples/basic/web-app.md
new file mode 100644
index 0000000..6619310
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/basic/web-app.md
@@ -0,0 +1,53 @@
+---
+sidebar_position: 103
+---
+
+# Web Application
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentservice
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentService
+    spec:
+      name: string
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-deployment
+                  image: nginx
+                  ports:
+                    - containerPort: 80
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          selector:
+            app: deployment
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+```
diff --git a/website/versioned_docs/version-0.2.1/examples/examples.md b/website/versioned_docs/version-0.2.1/examples/examples.md
new file mode 100644
index 0000000..e1dcadc
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/examples.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 0
+---
+
+# Examples
+
+This section provides a collection of examples demonstrating how to define and
+use ResourceGraphDefinitions in **kro** for various scenarios. Each example showcases a
+specific use case and includes a detailed explanation along with the
+corresponding YAML definitions.
+
+## Basic Examples
+
+- [Empty ResourceGraphDefinition (Noop)](./basic/noop.md) Explore the simplest form of a
+  ResourceGraphDefinition that doesn't define any resources, serving as a reference for
+  the basic structure.
+
+- [Simple Web Application](./basic/web-app.md) Deploy a basic web application with a
+  Deployment and Service.
+
+- [Web Application with Ingress](./basic/web-app-ingress.md) Extend the basic web
+  application example to include an optional Ingress resource for external
+  access.
+
+## Advanced Examples
+
+- [Deploying CoreDNS](./kubernetes/deploying-coredns.md) Learn how to deploy CoreDNS in a
+  Kubernetes cluster using kro ResourceGraphDefinitions, including the necessary
+  Deployment, Service, and ConfigMap.
diff --git a/website/versioned_docs/version-0.2.1/examples/gcp/category.json b/website/versioned_docs/version-0.2.1/examples/gcp/category.json
new file mode 100644
index 0000000..4277df4
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/gcp/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "GCP Examples",
+  "position": 400,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Google Cloud Platform"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.2.1/examples/gcp/cloud-sql.md b/website/versioned_docs/version-0.2.1/examples/gcp/cloud-sql.md
new file mode 100644
index 0000000..c3eb689
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/gcp/cloud-sql.md
@@ -0,0 +1,274 @@
+---
+sidebar_position: 406
+---
+
+# CloudSQL
+
+This example show how you can use KRO to deploy GCP Cloud SQL instance in 2 regions as a primary and replica instances.
+
+
+## End User: CloudSQL
+The administrator needs to install the RGD first.
+The end user creates a `CloudSQL` resource that looks like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: CloudSQL
+metadata:
+  name: demo
+  namespace: config-connector
+spec:
+  name: demo
+  project: my-gcp-project
+  primaryRegion: us-central1
+  replicaRegion: us-west1
+```
+
+The status of the applied resource can be checked using:
+
+```
+kubectl get cloudsqls
+kubectl get cloudsql demo -n config-connector -o yaml
+```
+
+Navigate to CloudSQL page in the GCP Console and verify the creation of primary and replica instances.
+
+Once done, the user can delete the `CloudSQL` instance:
+
+```
+kubectl delete cloudsql demo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+> kubectl get rgd cloudsql.kro.run
+NAME               APIVERSION   KIND       STATE    AGE
+cloudsql.kro.run   v1alpha1     CloudSQL   Active   44m
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: cloudsql.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CloudSQL
+    spec:
+      name: string
+      project: string
+      primaryRegion: string
+      replicaRegion: string
+    status:
+      connectionName: ${sqlPrimary.status.connectionName}
+      ipAddress: ${sqlPrimary.status.firstIpAddress}
+  resources:
+  - id: cloudkmsEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: cloudkms-enablement
+      spec:
+        resourceID: cloudkms.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: serviceUsageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: serviceusage-enablement
+      spec:
+        resourceID: serviceusage.googleapis.com
+  - id: sqlAdminEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: sqladmin-enablement
+      spec:
+        resourceID: sqladmin.googleapis.com
+  - id: serviceidentity
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: ServiceIdentity
+      metadata:
+        labels:
+          enabled-service: ${serviceUsageEnable.metadata.name}
+        name: sqladmin.googleapis.com
+      spec:
+        projectRef:
+          external: ${schema.spec.project}
+  - id: keyringPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        location: ${schema.spec.primaryRegion}
+  - id: keyringReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        location: ${schema.spec.replicaRegion}
+  - id: kmskeyPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.primaryRegion}
+        name: ${schema.spec.name}-primary
+      spec:
+        keyRingRef:
+          name: ${keyringPrimary.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: kmskeyReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.replicaRegion}
+        name: ${schema.spec.name}-replica
+      spec:
+        keyRingRef:
+          name: ${keyringReplica.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: iampolicymemberPrimary
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: sql-kms-${schema.spec.primaryRegion}-policybinding
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyPrimary.metadata.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: iampolicymemberReplica
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        name: sql-kms-${schema.spec.replicaRegion}-policybinding
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyReplica.metadata.name}-replica
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: sqlPrimary
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.primaryRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.primaryRegion}/keyRings/${keyringPrimary.metadata.name}/cryptoKeys/${kmskeyPrimary.metadata.name}
+        region: ${schema.spec.primaryRegion}
+        settings:
+          availabilityType: REGIONAL
+          backupConfiguration:
+            backupRetentionSettings:
+              retainedBackups: 6
+            enabled: true
+            location: us
+          diskSize: 50
+          diskType: PD_SSD
+          maintenanceWindow:
+            day: 7
+            hour: 3
+          tier: db-custom-8-30720
+  - id: sqlReplica
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.replicaRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.replicaRegion}/keyRings/${keyringReplica.metadata.name}/cryptoKeys/${kmskeyReplica.metadata.name}
+        masterInstanceRef:
+          name: ${schema.spec.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        region: ${schema.spec.replicaRegion}
+        settings:
+          availabilityType: REGIONAL
+          diskSize: 50
+          diskType: PD_SSD
+          tier: db-custom-8-30720
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.2.1/examples/gcp/eventarc.md b/website/versioned_docs/version-0.2.1/examples/gcp/eventarc.md
new file mode 100644
index 0000000..5ff9517
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/gcp/eventarc.md
@@ -0,0 +1,273 @@
+---
+sidebar_position: 407
+---
+
+# GCSBucketWithFinalizerTrigger
+
+A **Platform Administrator** wants to give end users in their organization self-service access to creating GCS Buckets that triggers a Cloud Workflow when any object in it is finalized. The platform administrator creates a kro ResourceGraphDefinition called *gcsbucketwithfinalizertrigger.kro.run* that defines the required Kubernetes resources and a CRD called *GCSBucketWithFinalizertrigger* that exposes only the options they want to be configurable by end users.
+
+The following KCC objects are created by this RGD:
+* IAMServiceAccount, IAMPolicyMember: Service Account with necessary permissions for Eventarc and Pub/Sub.
+* StorageBucket
+* PubSubTopic
+* EventArcTrigger
+* StorageNotification: To publish events from the GCS bucket to a Pub/Sub topic.
+
+Pre-requisites:
+* Workflow: The workflow to be triggered on Finalizer event.
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GCS EventArc Stack](gcsbucket-with-finalizer-trigger.png)
+
+<!--
+meta {
+  title "GCS Bucket Finalizer Event Processing"
+}
+
+elements {
+  gcp {
+      card iam {
+         name "EventArc, Workflow"
+      }
+      group  storageA {
+        name ""
+        card gcs {
+        name "bucket"
+        }
+        card pubsub {
+        name "finalizer topic"
+        }
+        card eventarc {
+        name "trigger"
+        }
+        card workflows {
+        name "finalizer workflow"
+        }
+      }
+  }
+}
+
+paths {
+  gcs \-\-> pubsub
+  pubsub \-\-> eventarc
+  eventarc \-\-> workflows
+}
+-->
+
+
+
+## End User: GCSBucketWithFinalizerTrigger
+
+The administrator needs to install the RGD first.
+The end user creates a `GCSBucketWithFinalizerTrigger` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GCSBucketWithFinalizerTrigger
+metadata:
+  name: gcsevent-test
+  namespace: config-connector
+spec:
+  name: demo-gcs               # used as name or prefix for KCC objects
+  workflowName: gcs-finalizer-workflow   # Replace with your workflow path
+  location: us-central1        # desired location
+  project: my-project-name     # Replace with your project name
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gcsbucketwithfinalizertrigger -n config-connector
+kubectl get gcsbucketwithfinalizertrigger gcsevent-test -n config-connector -o yaml
+```
+
+Navigate to GCS page in the GCP Console and verify the bucket creation. Also verify that the Triggers are setup correctly in the EventArc page.
+
+Once done, the user can delete the `GCSBucketWithFinalizerTrigger` instance:
+
+```
+kubectl delete gcsbucketwithfinalizertrigger gcsevent-test -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gcsbucketwithfinalizertrigger.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gcsbucketwithfinalizertrigger.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GCSBucketWithFinalizerTrigger
+    spec:
+      name: string
+      workflowName: string
+      location: string
+      project: string
+    status:
+      url: ${bucket.status.url}
+  resources:
+  - id: storageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: storage-enablement
+      spec:
+        resourceID: storage.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: pubsubEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: pubsub-enablement
+      spec:
+        resourceID: pubsub.googleapis.com
+  - id: eventarcEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: eventarc-enablement
+      spec:
+        resourceID: eventarc.googleapis.com
+  - id: iamsa
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMServiceAccount
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        #annotations:
+        #  cnrm.cloud.google.com/project-id: ${schema.spec.project}
+        name: ${schema.spec.name}
+      spec:
+        displayName: ${schema.spec.name}-eventarc-workflow
+  - id: iampmEventarc
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-eventarc
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/eventarc.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: iampmWorkflow
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-workflow
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/workflows.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          enabled-service: ${pubsubEnable.metadata.name}
+        name: ${schema.spec.name}-gcs-finalizer-topic
+  - id: bucket
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageBucket
+      metadata:
+        labels:
+          enabled-service: ${storageEnable.metadata.name}
+        name: ${schema.spec.name}-${schema.spec.project}
+      spec:
+        uniformBucketLevelAccess: true
+  - id: eventTrigger
+    template:
+      apiVersion: eventarc.cnrm.cloud.google.com/v1beta1
+      kind: EventarcTrigger
+      metadata:
+        labels:
+          enabled-service: ${eventarcEnable.metadata.name}
+        name: ${schema.spec.name}-gcsfinalizer
+      spec:
+        destination:
+          workflowRef:
+            external: "projects/${schema.spec.project}/locations/${schema.spec.location}/workflows/${schema.spec.workflowName}"
+        location: ${schema.spec.location}
+        serviceAccountRef:
+          name: ${iamsa.metadata.name}
+        transport:
+          pubsub:
+            topicRef:
+              name: ${topic.metadata.name}
+              namespace: config-connector
+        matchingCriteria:
+        - attribute: "type"
+          value: "google.cloud.pubsub.topic.v1.messagePublished"
+        projectRef:
+          external: "projects/${schema.spec.project}"
+  - id: storageNotification
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageNotification
+      metadata:
+        name: ${schema.spec.name}-gcs
+      spec:
+        bucketRef:
+          name: ${bucket.metadata.name}
+        topicRef:
+          name: ${topic.metadata.name}
+        eventTypes:
+        - "OBJECT_FINALIZE"
+        payloadFormat: JSON_API_V1
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.2.1/examples/gcp/gcsbucket-with-finalizer-trigger.png b/website/versioned_docs/version-0.2.1/examples/gcp/gcsbucket-with-finalizer-trigger.png
new file mode 100644
index 0000000..8bfdd20
Binary files /dev/null and b/website/versioned_docs/version-0.2.1/examples/gcp/gcsbucket-with-finalizer-trigger.png differ
diff --git a/website/versioned_docs/version-0.2.1/examples/gcp/gke-cluster.md b/website/versioned_docs/version-0.2.1/examples/gcp/gke-cluster.md
new file mode 100644
index 0000000..6b4cbd3
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/gcp/gke-cluster.md
@@ -0,0 +1,233 @@
+---
+sidebar_position: 405
+---
+
+# GKECluster
+
+A **Platform Administrator** wants to give end users in their organization self-service access to create GKE clusters. The platform administrator creates a kro ResourceGraphDefinition called *gkecluster.kro.run* that defines the required Kubernetes resources and a CRD called *GKEcluster* that exposes only the options they want to be configurable by end users. The ResourceGraphDefinition would define the following resources (using [KCC](https://github.com/GoogleCloudPlatform/k8s-config-connector) to provide the mappings from K8s CRDs to Google Cloud APIs):
+
+* GKE cluster
+* Container Node Pool
+* Network
+* Subnetwork
+* KMSKeyRing   - Encrypt BootDisk
+* KMSCryptoKey - Encrypt BootDisk
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GKE Cluster Stack](gke-cluster.png)
+
+## End User: GKECluster
+
+The administrator needs to install the RGD first.
+The end user creates a `GKECluster` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GKECluster
+metadata:
+  name: krodemo
+  namespace: config-connector
+spec:
+  name: krodemo         # Name used for all resources created as part of this RGD
+  location: us-central1 # Region where the GCP resources are created
+  maxnodes: 4           # Max scaling limit for the nodes in the new nodepool
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gkeclusters
+kubectl get gkeclusters krodemo -n config-connector -o yaml
+```
+
+Navigate to GKE Cluster page in the GCP Console and verify the cluster creation.
+
+Once done, the user can delete the `GKECluster` instance:
+
+```
+kubectl delete gkecluster krodemo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gkecluster.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gkecluster.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GKECluster
+    spec:
+      name: string
+      nodepool: string
+      maxnodes: integer
+      location: string
+    status:
+      masterVersion: ${cluster.status.masterVersion}
+  resources:
+  - id: network
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeNetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${schema.spec.name}
+      spec:
+        #routingMode: GLOBAL
+        #deleteDefaultRoutesOnCreate: false
+        routingMode: REGIONAL
+        autoCreateSubnetworks: false
+  - id: subnet
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeSubnetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${network.metadata.name}
+      spec:
+        ipCidrRange: 10.2.0.0/16
+        #ipCidrRange: 10.10.90.0/24
+        region: ${schema.spec.location}
+        networkRef:
+          name: ${schema.spec.name}
+        #privateIpGoogleAccess: true
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${subnet.metadata.name}
+  - id: keyring
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${topic.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+  - id: key
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${keyring.metadata.name}
+      spec:
+        keyRingRef:
+          name: ${schema.spec.name}
+        purpose: ASYMMETRIC_SIGN
+        versionTemplate:
+          algorithm: EC_SIGN_P384_SHA384
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: nodepool
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerNodePool
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${cluster.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        autoscaling:
+          minNodeCount: 1
+          maxNodeCount: ${schema.spec.maxnodes}
+        nodeConfig:
+          machineType: n1-standard-1
+          diskSizeGb: 100
+          diskType: pd-standard
+          #taint:
+          #- effect: NO_SCHEDULE
+          #  key: originalKey
+          #  value: originalValue
+        clusterRef:
+          name: ${schema.spec.name}
+  - id: cluster
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerCluster
+      metadata:
+        #annotations:
+        #  cnrm.cloud.google.com/remove-default-node-pool: "false"
+        labels:
+          source: "gkecluster"
+        name: ${key.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        initialNodeCount: 1
+        networkRef:
+          name: ${schema.spec.name}
+        subnetworkRef:
+          name: ${schema.spec.name}
+        ipAllocationPolicy:
+          clusterIpv4CidrBlock: /20
+          servicesIpv4CidrBlock: /20
+        #masterAuth:
+        #  clientCertificateConfig:
+        #    issueClientCertificate: false
+        #workloadIdentityConfig:
+        #  # Workload Identity supports only a single namespace based on your project name.
+        #  # Replace ${PROJECT_ID?} below with your project ID.
+        #  workloadPool: ${PROJECT_ID?}.svc.id.goog      
+        notificationConfig:
+          pubsub:
+            enabled: true
+            topicRef:
+              name: ${schema.spec.name}
+        loggingConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "WORKLOADS"
+        monitoringConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "APISERVER"
+          managedPrometheus:
+            enabled: true
+        clusterAutoscaling:
+          enabled: true
+          autoscalingProfile: BALANCED
+          resourceLimits:
+            - resourceType: cpu
+              maximum: 100
+              minimum: 10
+            - resourceType: memory
+              maximum: 1000
+              minimum: 100
+          autoProvisioningDefaults:
+            bootDiskKMSKeyRef:
+              name: ${schema.spec.name}
+        nodeConfig:
+          linuxNodeConfig:
+            sysctls:
+              net.core.somaxconn: "4096"
+            cgroupMode: "CGROUP_MODE_UNSPECIFIED"
+      
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.2.1/examples/gcp/gke-cluster.png b/website/versioned_docs/version-0.2.1/examples/gcp/gke-cluster.png
new file mode 100644
index 0000000..37eaf08
Binary files /dev/null and b/website/versioned_docs/version-0.2.1/examples/gcp/gke-cluster.png differ
diff --git a/website/versioned_docs/version-0.2.1/examples/kubernetes/category.json b/website/versioned_docs/version-0.2.1/examples/kubernetes/category.json
new file mode 100644
index 0000000..d17bd0a
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/kubernetes/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Kubernetes Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Kubernetes"
+  },
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/website/versioned_docs/version-0.2.1/examples/kubernetes/deploying-coredns.md b/website/versioned_docs/version-0.2.1/examples/kubernetes/deploying-coredns.md
new file mode 100644
index 0000000..d10d654
--- /dev/null
+++ b/website/versioned_docs/version-0.2.1/examples/kubernetes/deploying-coredns.md
@@ -0,0 +1,189 @@
+---
+sidebar_position: 10
+---
+
+# CoreDNS Deployment
+
+```yaml title="coredns-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: coredns.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CoreDNSDeployment
+    spec:
+      name: string | default=mycoredns
+      namespace: string | default=default
+      values:
+        clusterRole:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/bootstrapping": "rbac-defaults"}'
+        clusterRoleBinding:
+          annotations: 'map[string]string | default={"rbac.authorization.kubernetes.io/autoupdate": "\"true\""}'
+        configMap:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns"}'
+        deployment:
+          annotations: 'map[string]string | default={"deployment.kubernetes.io/revision": "\"1\""}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/name": "CoreDNS"}'
+          replicas: integer | default=2
+        image:
+          repository: string | default=coredns/coredns
+          tag: string | default=1.11.3
+        resources:
+          limits:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+          requests:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+        service:
+          annotations: 'map[string]string | default={"prometheus.io/port": "9153", "prometheus.io/scrape": "true"}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "kube-dns", "k8s-app": "kube-dns", "kubernetes.io/cluster-service": "true", "kubernetes.io/name": "CoreDNS"}'
+          clusterIP: string | default=10.100.123.45
+          clusterIPs: '[]string | default=["10.100.123.45"]'
+          ipFamilies: '[]string | default=["IPv4"]'
+          type: string | default=ClusterIP
+        serviceAccount:
+          secrets: 'map[string]string | default={"name": "coredns-token-pvcnf"}'
+  resources:
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - endpoints
+        - services
+        - pods
+        - namespaces
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - discovery.k8s.io
+        resources:
+        - endpointslices
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - nodes
+        verbs:
+        - get
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+        annotations: ${schema.spec.values.clusterRoleBinding.annotations}
+      roleRef:
+        apiGroup: rbac.authorization.k8s.io
+        kind: ClusterRole
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: configMap
+    template:
+      apiVersion: v1
+      kind: ConfigMap
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.configMap.labels}
+      data:
+        Corefile: |-
+          .:53 {
+              errors
+              health
+              kubernetes cluster.local in-addr.arpa ip6.arpa {
+                pods insecure
+                fallthrough in-addr.arpa ip6.arpa
+              }
+              prometheus :9153
+              forward . /etc/resolv.conf
+              cache 30
+              loop
+              reload
+              loadbalance
+          }
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        annotations: ${schema.spec.values.deployment.annotations}
+        labels: ${schema.spec.values.deployment.labels}
+        name: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels: ${schema.spec.values.configMap.labels}
+        template:
+          metadata:
+            labels: ${schema.spec.values.configMap.labels}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - name: "coredns"
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              args: ["-conf", "/etc/coredns/Corefile"]
+              resources: ${schema.spec.values.resources}
+              volumeMounts:
+              - name: config-volume
+                mountPath: /etc/coredns
+            volumes:
+              - name: config-volume
+                configMap:
+                  name: ${schema.spec.name}
+                  items:
+                  - key: Corefile
+                    path: Corefile
+  - id: service
+    template:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.service.labels}
+        annotations: ${schema.spec.values.service.annotations}
+      spec:
+        selector:
+          k8s-app: kube-dns
+        clusterIP: ${schema.spec.values.service.clusterIP}
+        clusterIPs: ${schema.spec.values.service.clusterIPs}
+        internalTrafficPolicy: Cluster
+        ipFamilies: ${schema.spec.values.service.ipFamilies}
+        ports:
+        - name: dns
+          port: 53
+          protocol: UDP
+          targetPort: 53
+        - name: dns-tcp
+          port: 53
+          protocol: TCP
+          targetPort: 53
+        selector:
+         k8s-app: kube-dns
+        sessionAffinity: None
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.name}
+        namespace: ${schema.spec.namespace}
+        labels: ${schema.spec.values.configMap.labels}
+      secrets:
+      - ${schema.spec.values.serviceAccount.secrets}
+```
diff --git a/website/versioned_docs/version-0.2.2/docs/concepts/00-resource-group-definitions.md b/website/versioned_docs/version-0.2.2/docs/concepts/00-resource-group-definitions.md
new file mode 100644
index 0000000..a2c69a0
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/concepts/00-resource-group-definitions.md
@@ -0,0 +1,167 @@
+---
+sidebar_position: 1
+---
+
+# ResourceGraphDefinitions
+
+ResourceGraphDefinitions are the fundamental building blocks in **kro**. They provide a
+way to define, organize, and manage sets of related Kubernetes resources as a
+single, reusable unit.
+
+## What is a ResourceGraphDefinition?
+
+A **ResourceGraphDefinition** is a custom resource that lets you create new Kubernetes
+APIs for deploying multiple resources together. It acts as a blueprint,
+defining:
+
+- What users can configure (schema)
+- What resources to create (resources)
+- How resources reference each other (dependencies)
+- When resources should be included (conditions)
+- What status to expose (status)
+
+When you create a **ResourceGraphDefinition**, kro generates a new API (a.k.a Custom
+Resource Defintion) in your cluster that others can use to deploy resources in a
+consistent, controlled way.
+
+## Anatomy of a ResourceGraphDefinition
+
+A ResourceGraphDefinition, like any Kubernetes resource, consists of three main parts:
+
+1. **Metadata**: name, namespace, labels, etc.
+2. **Spec**: Defines the structure and properties of the ResourceGraphDefinition
+3. **Status**: Reflects the current state of the ResourceGraphDefinition
+
+The `spec` section of a ResourceGraphDefinition contains two main components:
+
+- **Schema**: Defines what an instance of your API looks like:
+  - What users can configure during creation and update
+  - What status information they can view
+  - Default values and validation rules
+- **Resources**: Specifies the Kubernetes resources to create:
+  - Resource templates
+  - Dependencies between resources
+  - Conditions for inclusion
+  - Readiness criteria
+
+This structure translates to YAML as follows:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-resourcegraphdefinition # Metadata section
+spec:
+  schema: # Define your API
+    apiVersion: v1alpha1 # API version
+    kind: MyAPI # API kind
+    spec: {} # fields users can configure
+    status: {} # fields kro will populate
+
+  # Define the resources kro will manage
+  resources:
+    - id: resource1
+      # declare your resources along with default values and variables
+      template: {}
+```
+
+Let's look at each component in detail...
+
+## Understanding the Schema
+
+The schema section defines your new API's structure. It determines:
+
+- What fields users can configure when creating instances
+- What status information they can view
+- Type validation and default values
+
+Here's an example schema:
+
+```yaml
+schema:
+  apiVersion: v1alpha1
+  kind: WebApplication # This becomes your new API type
+  spec:
+    # Fields users can configure using a simple, straightforward syntax
+    name: string
+    image: string | default="nginx"
+    replicas: integer | default=3
+    ingress:
+      enabled: boolean | default=false
+
+  status:
+    # Fields kro will populate automatically from your resources
+    # Types are inferred from these CEL expressions
+    availableReplicas: ${deployment.status.availableReplicas}
+    conditions: ${deployment.status.conditions}
+```
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI spec compatible.
+No need to write complex OpenAPI schemas - just define your fields and types in
+a straightforward way. For the complete specification of this format, check out
+the [Simple Schema specification](./10-simple-schema.md). Status fields use CEL
+expressions to reference fields from resources defined in your ResourceGraphDefinition.
+kro automatically:
+
+- Infers the correct types from your expressions
+- Validates that referenced resources exist
+- Updates these fields as your resources change
+
+## ResourceGraphDefinition Processing
+
+When you create a **ResourceGraphDefinition**, kro processes it in several steps to ensure
+correctness and set up the necessary components:
+
+1. **Validation**: kro validates your **ResourceGraphDefinition** to ensure it's well
+   formed and follows the correct syntax, maximizing the chances of successful
+   deployment, and catching as many errors as possible early on. It:
+
+   - Validates your schema definition follows the simple schema format
+   - Ensures all resource templates are valid Kubernetes manifests
+   - Checks that referenced values exist and are of the correct type
+   - Confirms resource dependencies form a valid Directed Acycled Graph(DAG)
+     without cycles
+   - Validates all CEL expressions in status fields and conditions
+
+2. **API Generation**: kro generates and registers a new CRD in your cluster
+   based on your schema. For example, if your **ResourceGraphDefinition** defines a
+   `WebApplication` API, kro creates a CRD that:
+
+   - Provides API validation based on your schema definition
+   - Automatically applies default values you've defined
+   - Makes status information available to users and other systems
+   - Integrates seamlessly with kubectl and other Kubernetes tools
+
+3. **Controller Configuration**: kro configures itself to watch for instances of
+   your new API and:
+
+   - Creates all required resources following the dependency order
+   - Manages references and value passing between resources
+   - Handles the complete lifecycle for create, update, and delete operations
+   - Keeps status information up to date based on actual resource states
+
+For instance, when you create a `WebApplication` ResourceGraphDefinition, kro generates
+the `webapplications.kro.run` CRD. When users create instances of this API, kro
+manages all the underlying resources (Deployments, Services, Custom Resources,
+etc.) automatically.
+
+kro continuously monitors your ResourceGraphDefinition for changes, updating the API and
+its behavior accordingly.
+
+## ResourceGraphDefinition Instance Example
+
+After the **ResourceGraphDefinition** is validated and registered in the cluster, users
+can can create instances of it. Here's an example of how an instance for the
+`WebApplication` might look:
+
+```yaml title="my-web-app-instance.yaml"
+apiVersion: kro.run/v1alpha1
+kind: WebApplication
+metadata:
+  name: my-web-app
+spec:
+  appName: awesome-app
+  image: nginx:latest
+  replicas: 3
+```
diff --git a/website/versioned_docs/version-0.2.2/docs/concepts/10-simple-schema.md b/website/versioned_docs/version-0.2.2/docs/concepts/10-simple-schema.md
new file mode 100644
index 0000000..62db74f
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/concepts/10-simple-schema.md
@@ -0,0 +1,194 @@
+---
+sidebar_position: 2
+---
+
+# Simple Schema
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI specification
+compatible. Here's a comprehensive example:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: web-application
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: WebApplication
+    spec:
+      # Basic types
+      name: string | required=true description="My Name"
+      replicas: integer | default=1 minimum=1 maximum=100
+      image: string | required=true
+
+      # Structured type
+      ingress:
+        enabled: boolean | default=false
+        host: string | default="example.com"
+        path: string | default="/"
+
+      # Array type
+      ports: "[]integer"
+
+      # Map type
+      env: "map[string]string"
+
+    status:
+      # Status fields with auto-inferred types
+      availableReplicas: ${deployment.status.availableReplicas}
+      serviceEndpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Type Definitions
+
+### Basic Types
+
+kro supports these foundational types:
+
+- `string`: Text values
+- `integer`: Whole numbers
+- `boolean`: True/False values
+- `number`: Decimal numbers
+
+For example:
+
+```yaml
+name: string
+age: integer
+enabled: boolean
+price: number
+```
+
+### Structure Types
+
+You can create complex objects by nesting fields. Each field can use any type,
+including other structures:
+
+```yaml
+# Simple structure
+address:
+  street: string
+  city: string
+  zipcode: string
+
+# Nested structures
+user:
+  name: string
+  address: # Nested object
+    street: string
+    city: string
+  contacts: "[]string" # Array of strings
+```
+
+### Array Types
+
+Arrays are denoted using `[]` syntax:
+
+- Basic arrays: `[]string`, `[]integer`, `[]boolean`
+
+Examples:
+
+```yaml
+tags: []string
+ports: []integer
+```
+
+### Map Types
+
+Maps are key-value pairs denoted as `map[keyType]valueType`:
+
+- `map[string]string`: String to string mapping
+- `map[string]integer`: String to integer mapping
+
+Examples:
+
+```yaml
+labels: "map[string]string"
+metrics: "map[string]number"
+```
+
+## Validation and Documentation
+
+Fields can have multiple markers for validation and documentation:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+### Supported Markers
+
+- `required=true`: Field must be provided
+- `default=value`: Default value if not specified
+- `description="..."`: Field documentation
+- `enum="value1,value2"`: Allowed values
+- `minimum=value`: Minimum value for numbers
+- `maximum=value`: Maximum value for numbers
+
+Multiple markers can be combined using the `|` separator.
+
+For example:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+```
+
+## Status Fields
+
+Status fields use CEL expressions to reference values from resources. kro
+automatically:
+
+- Infers the correct types from the expressions
+- Validates that referenced resources exist
+- Updates values when the underlying resources change
+
+```yaml
+status:
+  # Types are inferred from the referenced fields
+  availableReplicas: ${deployment.status.availableReplicas}
+  endpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Default Status Fields
+
+kro automatically injects two fields to every instance's status:
+
+### 1. Conditions
+
+An array of condition objects tracking the instance's state:
+
+```yaml
+status:
+  conditions:
+    - type: string # e.g., "Ready", "Progressing"
+      status: string # "True", "False", "Unknown"
+      lastTransitionTime: string
+      reason: string
+      message: string
+```
+
+Common condition types:
+
+- `Ready`: Instance is fully reconciled
+- `Progressing`: Working towards desired state
+- `Degraded`: Operational but not optimal
+- `Error`: Reconciliation error occurred
+
+### 2. State
+
+A high-level summary of the instance's status:
+
+```yaml
+status:
+  state: string # Ready, Progressing, Degraded, Unknown, Deleting
+```
+
+:::tip
+
+`conditions` and `state` are reserved words. If defined in your schema, kro will
+override them with its own values.
+
+:::
diff --git a/website/versioned_docs/version-0.2.2/docs/concepts/15-instances.md b/website/versioned_docs/version-0.2.2/docs/concepts/15-instances.md
new file mode 100644
index 0000000..eb9f575
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/concepts/15-instances.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 15
+---
+
+# Instances
+
+Once **kro** processes your ResourceGraphDefinition, it creates a new API in your cluster.
+Users can then create instances of this API to deploy resources in a consistent,
+controlled way.
+
+## Understanding Instances
+
+An instance represents your deployed application. When you create an instance,
+you're telling kro "I want this set of resources running in my cluster". The
+instance contains your configuration values and serves as the single source of
+truth for your application's desired state. Here's an example instance of our
+WebApplication API:
+
+```yaml
+apiVersion: v1alpha1
+kind: WebApplication
+metadata:
+  name: my-app
+spec:
+  name: web-app
+  image: nginx:latest
+  ingress:
+    enabled: true
+```
+
+When you create this instance, kro:
+
+- Creates all required resources (Deployment, Service, Ingress)
+- Configures them according to your specification
+- Manages them as a single unit
+- Keeps their status up to date
+
+## How kro Manages Instances
+
+kro uses the standard Kubernetes reconciliation pattern to manage instances:
+
+1. **Observe**: Watches for changes to your instance or its resources
+2. **Compare**: Checks if current state matches desired state
+3. **Act**: Creates, updates, or deletes resources as needed
+4. **Report**: Updates status to reflect current state
+
+This continuous loop ensures your resources stay in sync with your desired
+state, providing features like:
+
+- Self-healing
+- Automatic updates
+- Consistent state management
+- Status tracking
+
+## Monitoring Your Instances
+
+KRO provides rich status information for every instance:
+
+```bash
+$ kubectl get webapplication my-app
+NAME     STATUS    SYNCED   AGE
+my-app   ACTIVE    true     30s
+```
+
+For detailed status, check the instance's YAML:
+
+```yaml
+status:
+  state: ACTIVE # High-level instance state
+  availableReplicas: 3 # Status from Deployment
+  conditions: # Detailed status conditions
+    - type: Ready
+      status: "True"
+      lastTransitionTime: "2024-07-23T01:01:59Z"
+      reason: ResourcesAvailable
+      message: "All resources are available and configured correctly"
+```
+
+### Understanding Status
+
+Every instance includes:
+
+1. **State**: High-level status
+
+   - `Running`: All resources are ready
+   - `Progressing`: Working towards desired state
+   - `Failed`: Error occurred
+   - `Terminating`: Being deleted
+
+2. **Conditions**: Detailed status information
+
+   - `Ready`: Instance is fully operational
+   - `Progressing`: Changes are being applied
+   - `Degraded`: Operating but not optimal
+   - `Error`: Problems detected
+
+3. **Resource Status**: Status from your resources
+   - Values you defined in your ResourceGraphDefinition's status section
+   - Automatically updated as resources change
+
+## Best Practices
+
+- **Version Control**: Keep your instance definitions in version control
+  alongside your application code. This helps track changes, rollback when
+  needed, and maintain configuration history.
+
+- **Use Labels Effectively**: Add meaningful labels to your instances for better
+  organization, filtering, and integration with other tools. kro propagates
+  labels to the sub resources for easy identification.
+
+- **Active Monitoring**: Regularly check instance status beyond just "Running".
+  Watch conditions, resource status, and events to catch potential issues early
+  and understand your application's health.
+
+- **Regular Reviews**: Periodically review your instance configurations to
+  ensure they reflect current requirements and best practices. Update resource
+  requests, limits, and other configurations as your application needs evolve.
diff --git a/website/versioned_docs/version-0.2.2/docs/concepts/20-access-control.md b/website/versioned_docs/version-0.2.2/docs/concepts/20-access-control.md
new file mode 100644
index 0000000..198555e
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/concepts/20-access-control.md
@@ -0,0 +1,75 @@
+---
+sidebar_position: 20
+---
+
+# Access Control
+
+There are currently two modes of access control supported by **kro**, if you
+[install through the Helm chart](../getting-started/01-Installation.md#install-kro-using-helm):
+
+- `unrestricted`
+
+- `aggregation`
+
+The mode is selected with a `values` property `rbac.mode`, and defaults to `unrestricted`.
+
+## `unrestricted` Access
+
+In the `unrestricted` access mode, the chart includes a `ClusterRole` granting
+**kro** _full control to every resource type in your cluster_. This can be
+useful for experimenting in a test environment, where access control is not
+necessary, but is not recommended in a production environment.
+
+In this mode, anyone with access to create `ResourceGraphDefinition` resources,
+effectively also has admin access to the cluster.
+
+## `aggregation` Access
+
+In the `aggreagation` access mode, the chart includes an [_aggregated_ `ClusterRole`](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles)
+which dynamically includes all rules from all `ClusterRoles` that have the label
+`rbac.kro.run/aggregate-to-controller: "true"`.
+
+There is a very minimal set of permissions provisioned by the chart itself, just
+enough to let **kro** run at all: full permissions for `ResourceGraphDefinition`s
+and its subresources, and full permissions for `CustomResourceDefinitions` as
+**kro** will create them in response to the existence of an RGD.
+
+However, this does _not_ automatically set up permissions for **kro** to actually
+reconcile those generated CRDs! In other words, when using this mode, you will
+need to provision additional access for **kro** for every new resource type you
+define.
+
+### Example
+
+If you want to create a `ResourceGraphDefinition` that specifies a new resource
+type with `kind: Foo`, and where the graph includes an `apps/v1/Deployment` and
+a `v1/ConfigMap`, you will need to create the following `ClusterRole` to ensure
+**kro** has enough access to reconcile your resources:
+
+```yaml
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  labels:
+    rbac.kro.run/aggregate-to-controller: "true"
+  name: kro:controller:foos
+rules:
+  - apiGroups:
+      - kro.run
+    resources:
+      - foos
+    verbs:
+      - "*"
+  - apiGroups:
+      - apps
+    resources:
+      - deployments
+    verbs:
+      - "*"
+  - apiGroups:
+      - ""
+    resources:
+      - configmaps
+    verbs:
+      - "*"
+```
diff --git a/website/versioned_docs/version-0.2.2/docs/concepts/_category_.json b/website/versioned_docs/version-0.2.2/docs/concepts/_category_.json
new file mode 100644
index 0000000..8d8506e
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/concepts/_category_.json
@@ -0,0 +1,9 @@
+{
+  "label": "Concepts",
+  "position": 40,
+  "link": {
+    "description": "Learn about the core concepts of kro"
+  },
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.2.2/docs/faq.md b/website/versioned_docs/version-0.2.2/docs/faq.md
new file mode 100644
index 0000000..84bdb51
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/faq.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: "FAQ"
+sidebar_position: 100
+---
+
+# FAQ
+
+1. **What is kro?**
+
+   Kube Resource Orchestrator (**kro**) is a new operator for Kubernetes that
+   simplifies the creation of complex Kubernetes resource configurations. kro
+   lets you create and manage custom groups of Kubernetes resources by defining
+   them as a _ResourceGraphDefinition_, the project's fundamental custom resource.
+   ResourceGraphDefinition specifications define a set of resources and how they relate to
+   each other functionally. Once defined, resource groups can be applied to a
+   Kubernetes cluster where the kro controller is running. Once validated by
+   kro, you can create instances of your resource group. kro translates your
+   ResourceGraphDefinition instance and its parameters into specific Kubernetes resources
+   and configurations which it then manages for you.
+
+2. **How does kro work?**
+
+   kro is designed to use core Kubernetes primitives to make resource grouping,
+   customization, and dependency management simpler. When a ResourceGraphDefinition is
+   applied to the cluster, the kro controller verifies its specification, then
+   dynamically creates a new CRD and registers it with the API server. kro then
+   deploys a dedicated controller to respond to instance events on the CRD. This
+   microcontroller is responsible for managing the lifecycle of resources
+   defined in the ResourceGraphDefinition for each instance that is created.
+
+3. **How do I use kro?**
+
+   First, you define your custom resource groups by creating _ResourceGraphDefinition_
+   specifications. These specify one or more Kubernetes resources, and can
+   include specific configuration for each resource.
+
+   For example, you can define a _WebApp_ resource group that is composed of a
+   _Deployment_, pre-configured to deploy your web server backend, and a
+   _Service_ configured to run on a specific port. You can just as easily create
+   a more complex _WebAppWithDB_ resource group by combining the existing
+   _WebApp_ resource group with a _Table_ custom resource to provision a cloud
+   managed database instance for your web app to use.
+
+   Once you have defined a ResourceGraphDefinition, you can apply it to a Kubernetes
+   cluster where the kro controller is running. kro will take care of the heavy
+   lifting of creating CRDs and deploying dedicated controllers in order to
+   manage instances of your new custom resource group.
+
+   You are now ready to create instances of your new custom resource group, and
+   kro will respond by dynamically creating, configuring, and managing the
+   underlying Kubernetes resources for you.
+
+4. **Why did you build this project?**
+
+   We want to help streamline and simplify building with Kubernetes. Building
+   with Kubernetes means dealing with resources that need to operate and work
+   together, and orchestrating this can get complex and difficult at scale. With
+   this project, we're taking a first step in reducing the complexity of
+   resource dependency management and customization, paving the way for a simple
+   and scalable way to create complex custom resources for Kubernetes.
+
+5. **Can I use this in production?**
+
+   This project is in active development and not yet intended for production
+   use. The _ResourceGraphDefinition_ CRD and other APIs used in this project are not
+   solidified and highly subject to change.
diff --git a/website/versioned_docs/version-0.2.2/docs/getting-started/01-Installation.md b/website/versioned_docs/version-0.2.2/docs/getting-started/01-Installation.md
new file mode 100644
index 0000000..11c9a9c
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/getting-started/01-Installation.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 1
+---
+
+# Installing kro
+
+This guide walks you through the process of installing kro on your Kubernetes
+cluster using Helm.
+
+## Prerequisites
+
+Before you begin, ensure you have the following:
+
+1. `Helm` 3.x installed
+2. `kubectl` installed and configured to interact with your Kubernetes cluster
+
+## Installation Steps
+
+:::info[**Alpha Stage**]
+
+kro is currently in alpha stage. While the images are publicly available, please
+note that the software is still under active development and APIs may change.
+
+:::
+
+### Install kro using Helm
+
+Once authenticated, install kro using the Helm chart:
+
+Fetch the latest release version from GitHub
+```sh
+export KRO_VERSION=$(curl -sL \
+    https://api.github.com/repos/kro-run/kro/releases/latest | \
+    jq -r '.tag_name | ltrimstr("v")'
+  )
+```
+Validate `KRO_VERSION` populated with a version
+```
+echo $KRO_VERSION
+```
+Install kro using Helm
+```
+helm install kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --create-namespace \
+  --version=${KRO_VERSION}
+```
+
+:::info[**Troubleshooting Helm Install**]
+Note that authentication is not required for pulling charts from public GHCR (GitHub Container Registry) repositories.
+
+Helm install download failures occur due to expired local credentials. To resolve this issue, clear your local credentials cache by running `helm registry logout ghcr.io` in your terminal, then retry the installation.
+
+:::
+
+## Verifying the Installation
+
+After running the installation command, verify that Kro has been installed
+correctly:
+
+1. Check the Helm release:
+
+   ```sh
+   helm -n kro list
+   ```
+
+   Expected result: You should see the "kro" release listed.
+   ```
+    NAME	NAMESPACE	REVISION	STATUS  
+    kro 	kro      	1       	deployed
+   ```
+
+2. Check the kro pods:
+   ```sh
+   kubectl get pods -n kro
+   ```
+   Expected result: You should see kro-related pods running.
+   ```
+    NAME                        READY   STATUS             RESTARTS   AGE
+    kro-7d98bc6f46-jvjl5        1/1     Running            0           1s 
+   ```
+
+## Upgrading kro
+
+To upgrade to a newer version of kro, use the Helm upgrade command:
+
+Replace `<new-version>` with the version you want to upgrade to.
+```bash
+export KRO_VERSION=<new-version>
+```
+
+Upgrade the controller
+```
+helm upgrade kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --version=${KRO_VERSION}
+```
+
+:::info[**CRD Updates**]
+
+Helm does not support updating CRDs, so you may need to manually update or
+remove and re-apply kro related CRDs. For more information, refer to the Helm
+documentation.
+
+:::
+
+## Uninstalling kro
+
+To uninstall kro, use the following command:
+
+```bash
+helm uninstall kro -n kro
+```
+
+Keep in mind that this command will remove all kro resources from your cluster,
+except for the ResourceGraphDefinition CRD and any other custom resources you may have
+created.
diff --git a/website/versioned_docs/version-0.2.2/docs/getting-started/02-deploy-a-resource-graph-definition.md b/website/versioned_docs/version-0.2.2/docs/getting-started/02-deploy-a-resource-graph-definition.md
new file mode 100644
index 0000000..58bc12c
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/getting-started/02-deploy-a-resource-graph-definition.md
@@ -0,0 +1,227 @@
+---
+sidebar_position: 2
+---
+
+# Deploy Your First ResourceGraphDefinition
+
+This guide will walk you through creating your first Resource Graph Definition in **kro**.
+We'll create a simple `ResourceGraphDefinition` that demonstrates key kro features.
+
+## What is a **ResourceGraphDefinition**?
+
+A `ResourceGraphDefinition` lets you create new Kubernetes APIs that deploy multiple
+resources together as a single, reusable unit. In this example, we’ll create a
+`ResourceGraphDefinition` that packages a reusable set of resources, including a
+`Deployment`, `Service`, and `Ingress`. These resources are available in any
+Kubernetes cluster. Users can then call the API to deploy resources as a single
+unit, ensuring they're always created together with the right configuration.
+
+Under the hood, when you create a `ResourceGraphDefinition`, kro:
+
+1. Treats your resources as a Directed Acyclic Graph (DAG) to understand their
+   dependencies
+2. Validates resource definitions and detects the correct deployment order
+3. Creates a new API (CRD) in your cluster
+4. Configures itself to watch and serve instances of this API
+
+## Prerequisites
+
+Before you begin, make sure you have the following:
+
+- **kro** [installed](./01-Installation.md) and running in your Kubernetes
+  cluster.
+- `kubectl` installed and configured to interact with your Kubernetes cluster.
+
+## Create your Application ResourceGraphDefinition
+
+Let's create a Resource Graph Definition that combines a `Deployment`, a `Service` and
+`Ingress`. Save this as `resourcegraphdefinition.yaml`:
+
+```yaml title="resourcegraphdefinition.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
+
+### Deploy the ResourceGraphDefinition
+
+1. **Create a ResourceGraphDefinition manifest file**: Create a new file with the
+   `ResourceGraphDefinition` definition. You can use the example above.
+
+2. **Apply the `ResourceGraphDefinition`**: Use the `kubectl` command to deploy the
+   ResourceGraphDefinition to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f resourcegraphdefinition.yaml
+   ```
+
+3. **Inpsect the `ResourceGraphDefinition`**: Check the status of the resources created by
+   the ResourceGraphDefinition using the `kubectl` command:
+
+   ```bash
+   kubectl get rgd my-application -owide
+   ```
+
+   You should see the ResourceGraphDefinition in the `Active` state, along with relevant
+   information to help you understand your application:
+
+   ```bash
+   NAME             APIVERSION   KIND          STATE    TOPOLOGICALORDER                     AGE
+   my-application   v1alpha1     Application   Active   ["deployment","service","ingress"]   49
+   ```
+
+### Create your Application Instance
+
+Now that your `ResourceGraphDefinition` is created, kro has generated a new API
+(Application) that orchestrates creation of the a `Deployment`, a `Service`, and
+an `Ingress`. Let's use it!
+
+1. **Create an Application instance**: Create a new file named `instance.yaml`
+   with the following content:
+
+   ```yaml title="instance.yaml"
+   apiVersion: kro.run/v1alpha1
+   kind: Application
+   metadata:
+     name: my-application-instance
+   spec:
+     name: my-awesome-app
+     ingress:
+       enabled: true
+   ```
+
+2. **Apply the Application instance**: Use the `kubectl` command to deploy the
+   Application instance to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f instance.yaml
+   ```
+
+3. **Inspect the Application instance**: Check the status of the resources
+
+   ```bash
+   kubectl get applications
+   ```
+
+   After a few seconds, you should see the Application instance in the `Active`
+   state:
+
+   ```bash
+   NAME                      STATE    SYNCED   AGE
+   my-application-instance   ACTIVE   True     10s
+   ```
+
+4. **Inspect the resources**: Check the resources created by the Application
+   instance:
+
+   ```bash
+   kubectl get deployments,services,ingresses
+   ```
+
+   You should see the `Deployment`, `Service`, and `Ingress` created by the
+   Application instance.
+
+   ```bash
+   NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
+   deployment.apps/my-awesome-app   3/3     3            3           69s
+
+   NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
+   service/my-awesome-app-service   ClusterIP   10.100.167.72   <none>        80/TCP    65s
+
+   NAME                                               CLASS    HOSTS   ADDRESS   PORTS   AGE
+   ingress.networking.k8s.io/my-awesome-app-ingress   <none>   *                 80      62s
+   ```
+
+### Delete the Application instance
+
+kro can also help you clean up resources when you're done with them.
+
+1. **Delete the Application instance**: Clean up the resources by deleting the
+   Application instance:
+
+   ```bash
+   kubectl delete application my-application-instance
+   ```
+
+   Now, the resources created by the Application instance will be deleted.
diff --git a/website/versioned_docs/version-0.2.2/docs/getting-started/_category_.json b/website/versioned_docs/version-0.2.2/docs/getting-started/_category_.json
new file mode 100644
index 0000000..723093d
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/getting-started/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Getting started",
+  "position": 20,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.2.2/docs/overview.md b/website/versioned_docs/version-0.2.2/docs/overview.md
new file mode 100644
index 0000000..1b314a7
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/overview.md
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.2.2/docs/overview.md.bak b/website/versioned_docs/version-0.2.2/docs/overview.md.bak
new file mode 100644
index 0000000..1b314a7
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/docs/overview.md.bak
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.2.2/examples/aws/ack-eks-cluster.md b/website/versioned_docs/version-0.2.2/examples/aws/ack-eks-cluster.md
new file mode 100644
index 0000000..6de9c75
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/aws/ack-eks-cluster.md
@@ -0,0 +1,222 @@
+---
+sidebar_position: 302
+---
+
+# EKS Cluster
+
+```yaml title="eks.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscluster.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSCluster
+    spec:
+      name: string
+      version: string
+    status:
+      networkingInfo:
+        vpcID: ${clusterVPC.status.vpcID}
+        subnetAZA: ${clusterSubnetA.status.subnetID}
+        subnetAZB: ${clusterSubnetB.status.subnetID}
+      clusterARN: ${cluster.status.ackResourceMetadata.arn}
+  # resources
+  resources:
+    - id: clusterVPC
+      readyWhen:
+        - ${clusterVPC.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: kro-cluster-vpc
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSSupport: true
+          enableDNSHostnames: true
+    - id: clusterElasticIPAddress
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: ElasticIPAddress
+        metadata:
+          name: kro-cluster-eip
+        spec: {}
+    - id: clusterInternetGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: InternetGateway
+        metadata:
+          name: kro-cluster-igw
+        spec:
+          vpc: ${clusterVPC.status.vpcID}
+    - id: clusterRouteTable
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: RouteTable
+        metadata:
+          name: kro-cluster-public-route-table
+        spec:
+          vpcID: ${clusterVPC.status.vpcID}
+          routes:
+            - destinationCIDRBlock: 0.0.0.0/0
+              gatewayID: ${clusterInternetGateway.status.internetGatewayID}
+    - id: clusterSubnetA
+      readyWhen:
+        - ${clusterSubnetA.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet1
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterSubnetB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet2
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterNATGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: NATGateway
+        metadata:
+          name: kro-cluster-natgateway1
+        spec:
+          subnetID: ${clusterSubnetB.status.subnetID}
+          allocationID: ${clusterElasticIPAddress.status.allocationID}
+    - id: clusterRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-role
+        spec:
+          name: kro-cluster-role
+          description: "kro created cluster cluster role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "eks.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterNodeRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-node-role
+        spec:
+          name: kro-cluster-node-role
+          description: "kro created cluster node role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
+            - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
+            - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "ec2.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterAdminRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-pia-role
+        spec:
+          name: kro-cluster-pia-role
+          description: "kro created cluster admin pia role"
+          policies:
+            - arn:aws:iam::aws:policy/AdministratorAccess
+          assumeRolePolicyDocument: |
+            {
+                "Version": "2012-10-17",
+                "Statement": [
+                    {
+                        "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
+                        "Effect": "Allow",
+                        "Principal": {
+                            "Service": "pods.eks.amazonaws.com"
+                        },
+                        "Action": [
+                            "sts:AssumeRole",
+                            "sts:TagSession"
+                        ]
+                    }
+                ]
+            }
+    - id: cluster
+      readyWhen:
+        - ${cluster.status.status == "ACTIVE"}
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Cluster
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          name: ${schema.spec.name}
+          accessConfig:
+            authenticationMode: API_AND_CONFIG_MAP
+          roleARN: ${clusterRole.status.ackResourceMetadata.arn}
+          version: ${schema.spec.version}
+          resourcesVPCConfig:
+            endpointPrivateAccess: false
+            endpointPublicAccess: true
+            subnetIDs:
+              - ${clusterSubnetA.status.subnetID}
+              - ${clusterSubnetB.status.subnetID}
+    - id: clusterNodeGroup
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Nodegroup
+        metadata:
+          name: kro-cluster-nodegroup
+        spec:
+          name: kro-cluster-ng
+          diskSize: 100
+          clusterName: ${cluster.spec.name}
+          subnets:
+            - ${clusterSubnetA.status.subnetID}
+            - ${clusterSubnetB.status.subnetID}
+          nodeRole: ${clusterNodeRole.status.ackResourceMetadata.arn}
+          updateConfig:
+            maxUnavailable: 1
+          scalingConfig:
+            minSize: 1
+            maxSize: 1
+            desiredSize: 1
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/aws/ack-networking-stack.md b/website/versioned_docs/version-0.2.2/examples/aws/ack-networking-stack.md
new file mode 100644
index 0000000..f388171
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/aws/ack-networking-stack.md
@@ -0,0 +1,79 @@
+---
+sidebar_position: 303
+---
+
+# Networking Stack
+
+```yaml title="networking-stack.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: networkingstack.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: NetworkingStack
+    spec:
+      name: string
+    status:
+      networkingInfo:
+        vpcID: ${vpc.status.vpcID}
+        subnetAZA: ${subnetAZA.status.subnetID}
+        subnetAZB: ${subnetAZB.status.subnetID}
+        subnetAZC: ${subnetAZC.status.subnetID}
+        securityGroup: ${securityGroup.status.id}
+  # resources
+  resources:
+    - id: vpc
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: vpc-${schema.spec.name}
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSHostnames: false
+          enableDNSSupport: true
+    - id: subnetAZA
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-a-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-b-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZC
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-c-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2c
+          cidrBlock: 192.168.128.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: securityGroup
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: cluster-security-group-${schema.spec.name}
+        spec:
+          vpcID: ${vpc.status.vpcID}
+          name: my-sg-${schema.spec.name}
+          description: something something
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/aws/ack-valkey-cachecluster.md b/website/versioned_docs/version-0.2.2/examples/aws/ack-valkey-cachecluster.md
new file mode 100644
index 0000000..46c0b53
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/aws/ack-valkey-cachecluster.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 304
+---
+
+# Valkey cluster
+
+```yaml title="valkey-cachecluster.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: valkey.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: Valkey
+    spec:
+      name: string
+    status:
+      csgARN: ${cacheSubnetGroup.status.ackResourceMetadata.arn}
+      subnets: ${cacheSubnetGroup.status.subnets}
+      clusterARN: ${valkey.status.ackResourceMetadata.arn}
+  resources:
+    - id: networkingStack
+      template:
+        apiVersion: kro.run/v1alpha1
+        kind: NetworkingStack
+        metadata:
+          name: ${schema.spec.name}-networking-stack
+        spec:
+          name: ${schema.spec.name}-networking-stack
+    - id: cacheSubnetGroup
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheSubnetGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-subnet-group
+        spec:
+          cacheSubnetGroupDescription: "Valkey ElastiCache subnet group"
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          subnetIDs:
+            - ${networkingStack.status.networkingInfo.subnetAZA}
+            - ${networkingStack.status.networkingInfo.subnetAZB}
+            - ${networkingStack.status.networkingInfo.subnetAZC}
+    - id: sg
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-sg
+        spec:
+          name: ${schema.spec.name}-valkey-sg
+          description: "Valkey ElastiCache security group"
+          vpcID: ${networkingStack.status.networkingInfo.vpcID}
+          ingressRules:
+            - fromPort: 6379
+              toPort: 6379
+              ipProtocol: tcp
+              ipRanges:
+                - cidrIP: 0.0.0.0/0
+    - id: valkey
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheCluster
+        metadata:
+          name: ${schema.spec.name}-valkey
+        spec:
+          cacheClusterID: vote-valkey-cluster
+          cacheNodeType: cache.t3.micro
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          engine: valkey
+          engineVersion: "8.x"
+          numCacheNodes: 1
+          port: 6379
+          securityGroupIDs:
+            - ${sg.status.id}
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/aws/aws-examples.md b/website/versioned_docs/version-0.2.2/examples/aws/aws-examples.md
new file mode 100644
index 0000000..71c1709
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/aws/aws-examples.md
@@ -0,0 +1,28 @@
+---
+sidebar_position: 301
+---
+
+:::info[**ACK controllers Dependency**]
+Most examples below will need ACK controllers to be running in the cluster either through kro or other means.
+:::
+
+# AWS Examples
+- [Deploying a Controller](./deploying-controller.md) Discover how to deploy a
+  Kubernetes controller using kro ResourceGraphDefinitions, including the necessary
+  Deployment, ServiceAccount, and CRDs.
+
+- [AWS Networking Stack](./ack-networking-stack.md) Learn how to define and
+  manage an AWS networking stack using kro ResourceGraphDefinitions, including VPCs,
+  subnets, and security groups.
+
+- [EKS Cluster with ACK CRDs](./ack-eks-cluster.md) Explore how to define and
+  manage an EKS cluster using AWS Controllers for Kubernetes (ACK) CRDs within a
+  kro ResourceGraphDefinition.
+
+- [Valkey CacheCluster with ACK CRDs](./ack-valkey-cachecluster.md) Learn how to
+  create and configure a Valkey CacheCluster using ACK CRDs in a kro
+  ResourceGraphDefinition.
+
+- [Pod and RDS DBInstance](./pod-rds-dbinstance.md) Deploy a Pod and an RDS
+  DBInstance in a kro ResourceGraphDefinition, showcasing the use of multiple resources
+  with dependencies.
diff --git a/website/versioned_docs/version-0.2.2/examples/aws/category.json b/website/versioned_docs/version-0.2.2/examples/aws/category.json
new file mode 100644
index 0000000..ce984a9
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/aws/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "AWS Examples",
+  "position": 300,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with AWS"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
diff --git a/website/versioned_docs/version-0.2.2/examples/aws/deploying-controller.md b/website/versioned_docs/version-0.2.2/examples/aws/deploying-controller.md
new file mode 100644
index 0000000..331fe1a
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/aws/deploying-controller.md
@@ -0,0 +1,297 @@
+---
+sidebar_position: 305
+---
+
+# Controller Deployment
+
+```yaml title="controller-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscontrollers.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSController
+    spec:
+      name: string | default=eks-controller
+      namespace: string | default=default
+      values:
+        aws:
+          accountID: string | required=true
+          region: string | default=us-west-2
+        deployment:
+          containerPort: integer | default=8080
+          replicas: integer | default=1
+        iamRole:
+          maxSessionDuration: integer | default=3600
+          oidcProvider: string | required=true
+          roleDescription: string | default=IRSA role for ACK EKS controller deployement on EKS cluster using kro Resource group
+        iamPolicy:
+          # would prefer to add a policyDocument here, need to support multiline string here
+          description: string | default="policy for eks controller"
+        image:
+          deletePolicy: string | default=delete
+          repository: string | default=public.ecr.aws/aws-controllers-k8s/eks-controller
+          tag: string | default=1.4.7
+          resources:
+            requests:
+              memory: string | default=64Mi
+              cpu: string | default=50m
+            limits:
+              memory: string | default=128Mi
+              cpu: string | default=100m
+        log:
+          enabled: boolean | default=false
+          level: string | default=info
+        serviceAccount:
+          name: string | default=eks-controller-sa
+  resources:
+  - id: eksCRDGroup
+    template:
+      apiVersion: kro.run/v1alpha1
+      kind: EKSCRDGroup
+      metadata:
+        name: ${schema.spec.name}-crd-group
+      spec:
+        name: ${schema.spec.name}-crd-group
+  - id: eksControllerIamPolicy
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Policy
+      metadata:
+        name: ${schema.spec.name}-iam-policy
+      spec:
+        name: ${schema.spec.name}-iam-policy
+        description: ${schema.spec.values.iamPolicy.description}
+        policyDocument: >
+          {
+            "Version": "2012-10-17",
+            "Statement": [
+              {
+                "Sid": "VisualEditor0",
+                "Effect": "Allow",
+                "Action": [
+                  "eks:*",
+                  "iam:GetRole",
+                  "iam:PassRole",
+                  "iam:ListAttachedRolePolicies",
+                  "ec2:DescribeSubnets"
+                ],
+                "Resource": "*"
+              }
+            ]
+          }
+  - id: eksControllerIamRole
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Role
+      metadata:
+        name: ${schema.spec.name}-iam-role
+        namespace: ${schema.spec.namespace}
+      spec:
+        name: ${schema.spec.name}-iam-role
+        description: ${schema.spec.values.iamRole.roleDescription}
+        maxSessionDuration: ${schema.spec.values.iamRole.maxSessionDuration}
+        policies:
+        - ${eksControllerIamPolicy.status.ackResourceMetadata.arn}
+        assumeRolePolicyDocument: >
+          {
+            "Version":"2012-10-17",
+            "Statement": [{
+              "Effect":"Allow",
+              "Principal": {"Federated": "arn:aws:iam::${schema.spec.values.aws.accountID}:oidc-provider/${schema.spec.values.iamRole.oidcProvider}"},
+              "Action": ["sts:AssumeRoleWithWebIdentity"],
+              "Condition": {
+                "StringEquals": {"${schema.spec.values.iamRole.oidcProvider}:sub": "system:serviceaccount:${schema.spec.namespace}:${schema.spec.values.serviceAccount.name}"}
+              }
+            }]
+          }
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.values.serviceAccount.name}
+        namespace: ${schema.spec.namespace}
+        annotations:
+          eks.amazonaws.com/role-arn : ${eksControllerIamRole.status.ackResourceMetadata.arn}
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        name: ${schema.spec.name}-deployment
+        namespace: ${schema.spec.namespace}
+        labels:
+          app.kubernetes.io.name: ${schema.spec.name}-deployment
+          app.kubernetes.io.instance: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels:
+            app.kubernetes.io.name: ${schema.spec.name}-deployment
+            app.kubernetes.io.instance: ${schema.spec.name}
+        template:
+          metadata:
+            labels:
+              app.kubernetes.io.name: ${schema.spec.name}-deployment
+              app.kubernetes.io.instance: ${schema.spec.name}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - command:
+              - ./bin/controller
+              args:
+              - --aws-region
+              - ${schema.spec.values.aws.region}
+              - --enable-development-logging=${schema.spec.values.log.enabled}
+              - --log-level
+              - ${schema.spec.values.log.level}
+              - --deletion-policy
+              - ${schema.spec.values.image.deletePolicy}
+              - --watch-namespace
+              - ${schema.spec.namespace}
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              name: controller
+              ports:
+                - name: http
+                  containerPort: ${schema.spec.values.deployment.containerPort}
+              resources:
+                requests:
+                  memory: ${schema.spec.values.image.resources.requests.memory}
+                  cpu: ${schema.spec.values.image.resources.requests.cpu}
+                limits:
+                    memory: ${schema.spec.values.image.resources.limits.memory}
+                    cpu: ${schema.spec.values.image.resources.limits.cpu}
+              env:
+              - name: ACK_SYSTEM_NAMESPACE
+                value: ${schema.spec.namespace}
+              - name: AWS_REGION
+                value: ${schema.spec.values.aws.region}
+              - name: DELETE_POLICY
+                value: ${schema.spec.values.image.deletePolicy}
+              - name: ACK_LOG_LEVEL
+                value: ${schema.spec.values.log.level}
+              ports:
+              - containerPort: 80
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}-clusterrolebinding
+      roleRef:
+        kind: ClusterRole
+        apiGroup: rbac.authorization.k8s.io
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}-clusterrole
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - configmaps
+        - secrets
+        verbs:
+        - get
+        - list
+        - patch
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - namespaces
+        verbs:
+        - get
+        - list
+        - watch
+      - apiGroups:
+        - ec2.services.k8s.aws
+        resources:
+        - securitygroups
+        - securitygroups/status
+        - subnets
+        - subnets/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries
+        - addons
+        - clusters
+        - fargateprofiles
+        - identityproviderconfigs
+        - nodegroups
+        - podidentityassociations
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries/status
+        - addons/status
+        - clusters/status
+        - fargateprofiles/status
+        - identityproviderconfigs/status
+        - nodegroups/status
+        - podidentityassociations/status
+        verbs:
+        - get
+        - patch
+        - update
+      - apiGroups:
+        - iam.services.k8s.aws
+        resources:
+        - roles
+        - roles/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - kms.services.k8s.aws
+        resources:
+        - keys
+        - keys/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources
+        - fieldexports
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources/status
+        - fieldexports/status
+        verbs:
+        - get
+        - patch
+        - update
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/aws/pod-rds-dbinstance.md b/website/versioned_docs/version-0.2.2/examples/aws/pod-rds-dbinstance.md
new file mode 100644
index 0000000..3b06711
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/aws/pod-rds-dbinstance.md
@@ -0,0 +1,50 @@
+---
+sidebar_position: 306
+---
+
+# Pod with RDS DBInstance
+
+```yaml title="deploymentdbinstance-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentandawspostgres
+spec:
+  # CRD Definition
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentAndAWSPostgres
+    spec:
+      applicationName: string
+      image: string
+      location: string
+
+  # Resources
+  resources:
+    - id: dbinstance
+      template:
+        apiVersion: rds.services.k8s.aws/v1alpha1
+        kind: DBInstance
+        metadata:
+          name: ${schema.spec.applicationName}-dbinstance
+        spec:
+          # need to specify the required fields (e.g masterUsername, masterPassword)
+          engine: postgres
+          dbInstanceIdentifier: ${schema.spec.applicationName}-dbinstance
+          allocatedStorage: 20
+          dbInstanceClass: db.t3.micro
+
+    - id: pod
+      template:
+        apiVersion: v1
+        kind: Pod
+        metadata:
+          name: ${schema.spec.applicationName}-pod
+        spec:
+          containers:
+            - name: container1
+              image: ${schema.spec.image}
+              env:
+                - name: POSTGRESS_ENDPOINT
+                  value: ${dbinstance.status.endpoint.address}
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/azure/category.json b/website/versioned_docs/version-0.2.2/examples/azure/category.json
new file mode 100644
index 0000000..2298240
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/azure/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Azure Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Microsoft Azure"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.2.2/examples/basic/category.json b/website/versioned_docs/version-0.2.2/examples/basic/category.json
new file mode 100644
index 0000000..0216728
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/basic/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Basic Examples",
+  "position": 100,
+  "link": {
+    "type": "generated-index",
+    "description": "Basic examples to get started with Kro"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.2.2/examples/basic/noop.md b/website/versioned_docs/version-0.2.2/examples/basic/noop.md
new file mode 100644
index 0000000..3258bcb
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/basic/noop.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 101
+---
+
+# Empty ResourceGraphDefinition
+
+```yaml title="noop.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: noop
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: NoOp
+    spec:
+      name: string | required=true
+  resources: []
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/basic/web-app-ingress.md b/website/versioned_docs/version-0.2.2/examples/basic/web-app-ingress.md
new file mode 100644
index 0000000..2767fca
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/basic/web-app-ingress.md
@@ -0,0 +1,92 @@
+---
+sidebar_position: 102
+---
+
+# Web Application w/ Ingress
+
+```yaml title="webapp-ingress.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/basic/web-app.md b/website/versioned_docs/version-0.2.2/examples/basic/web-app.md
new file mode 100644
index 0000000..6619310
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/basic/web-app.md
@@ -0,0 +1,53 @@
+---
+sidebar_position: 103
+---
+
+# Web Application
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentservice
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentService
+    spec:
+      name: string
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-deployment
+                  image: nginx
+                  ports:
+                    - containerPort: 80
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          selector:
+            app: deployment
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+```
diff --git a/website/versioned_docs/version-0.2.2/examples/examples.md b/website/versioned_docs/version-0.2.2/examples/examples.md
new file mode 100644
index 0000000..e1dcadc
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/examples.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 0
+---
+
+# Examples
+
+This section provides a collection of examples demonstrating how to define and
+use ResourceGraphDefinitions in **kro** for various scenarios. Each example showcases a
+specific use case and includes a detailed explanation along with the
+corresponding YAML definitions.
+
+## Basic Examples
+
+- [Empty ResourceGraphDefinition (Noop)](./basic/noop.md) Explore the simplest form of a
+  ResourceGraphDefinition that doesn't define any resources, serving as a reference for
+  the basic structure.
+
+- [Simple Web Application](./basic/web-app.md) Deploy a basic web application with a
+  Deployment and Service.
+
+- [Web Application with Ingress](./basic/web-app-ingress.md) Extend the basic web
+  application example to include an optional Ingress resource for external
+  access.
+
+## Advanced Examples
+
+- [Deploying CoreDNS](./kubernetes/deploying-coredns.md) Learn how to deploy CoreDNS in a
+  Kubernetes cluster using kro ResourceGraphDefinitions, including the necessary
+  Deployment, Service, and ConfigMap.
diff --git a/website/versioned_docs/version-0.2.2/examples/gcp/category.json b/website/versioned_docs/version-0.2.2/examples/gcp/category.json
new file mode 100644
index 0000000..4277df4
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/gcp/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "GCP Examples",
+  "position": 400,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Google Cloud Platform"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.2.2/examples/gcp/cloud-sql.md b/website/versioned_docs/version-0.2.2/examples/gcp/cloud-sql.md
new file mode 100644
index 0000000..c3eb689
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/gcp/cloud-sql.md
@@ -0,0 +1,274 @@
+---
+sidebar_position: 406
+---
+
+# CloudSQL
+
+This example show how you can use KRO to deploy GCP Cloud SQL instance in 2 regions as a primary and replica instances.
+
+
+## End User: CloudSQL
+The administrator needs to install the RGD first.
+The end user creates a `CloudSQL` resource that looks like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: CloudSQL
+metadata:
+  name: demo
+  namespace: config-connector
+spec:
+  name: demo
+  project: my-gcp-project
+  primaryRegion: us-central1
+  replicaRegion: us-west1
+```
+
+The status of the applied resource can be checked using:
+
+```
+kubectl get cloudsqls
+kubectl get cloudsql demo -n config-connector -o yaml
+```
+
+Navigate to CloudSQL page in the GCP Console and verify the creation of primary and replica instances.
+
+Once done, the user can delete the `CloudSQL` instance:
+
+```
+kubectl delete cloudsql demo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+> kubectl get rgd cloudsql.kro.run
+NAME               APIVERSION   KIND       STATE    AGE
+cloudsql.kro.run   v1alpha1     CloudSQL   Active   44m
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: cloudsql.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CloudSQL
+    spec:
+      name: string
+      project: string
+      primaryRegion: string
+      replicaRegion: string
+    status:
+      connectionName: ${sqlPrimary.status.connectionName}
+      ipAddress: ${sqlPrimary.status.firstIpAddress}
+  resources:
+  - id: cloudkmsEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: cloudkms-enablement
+      spec:
+        resourceID: cloudkms.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: serviceUsageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: serviceusage-enablement
+      spec:
+        resourceID: serviceusage.googleapis.com
+  - id: sqlAdminEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: sqladmin-enablement
+      spec:
+        resourceID: sqladmin.googleapis.com
+  - id: serviceidentity
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: ServiceIdentity
+      metadata:
+        labels:
+          enabled-service: ${serviceUsageEnable.metadata.name}
+        name: sqladmin.googleapis.com
+      spec:
+        projectRef:
+          external: ${schema.spec.project}
+  - id: keyringPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        location: ${schema.spec.primaryRegion}
+  - id: keyringReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        location: ${schema.spec.replicaRegion}
+  - id: kmskeyPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.primaryRegion}
+        name: ${schema.spec.name}-primary
+      spec:
+        keyRingRef:
+          name: ${keyringPrimary.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: kmskeyReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.replicaRegion}
+        name: ${schema.spec.name}-replica
+      spec:
+        keyRingRef:
+          name: ${keyringReplica.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: iampolicymemberPrimary
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: sql-kms-${schema.spec.primaryRegion}-policybinding
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyPrimary.metadata.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: iampolicymemberReplica
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        name: sql-kms-${schema.spec.replicaRegion}-policybinding
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyReplica.metadata.name}-replica
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: sqlPrimary
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.primaryRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.primaryRegion}/keyRings/${keyringPrimary.metadata.name}/cryptoKeys/${kmskeyPrimary.metadata.name}
+        region: ${schema.spec.primaryRegion}
+        settings:
+          availabilityType: REGIONAL
+          backupConfiguration:
+            backupRetentionSettings:
+              retainedBackups: 6
+            enabled: true
+            location: us
+          diskSize: 50
+          diskType: PD_SSD
+          maintenanceWindow:
+            day: 7
+            hour: 3
+          tier: db-custom-8-30720
+  - id: sqlReplica
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.replicaRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.replicaRegion}/keyRings/${keyringReplica.metadata.name}/cryptoKeys/${kmskeyReplica.metadata.name}
+        masterInstanceRef:
+          name: ${schema.spec.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        region: ${schema.spec.replicaRegion}
+        settings:
+          availabilityType: REGIONAL
+          diskSize: 50
+          diskType: PD_SSD
+          tier: db-custom-8-30720
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.2.2/examples/gcp/eventarc.md b/website/versioned_docs/version-0.2.2/examples/gcp/eventarc.md
new file mode 100644
index 0000000..5ff9517
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/gcp/eventarc.md
@@ -0,0 +1,273 @@
+---
+sidebar_position: 407
+---
+
+# GCSBucketWithFinalizerTrigger
+
+A **Platform Administrator** wants to give end users in their organization self-service access to creating GCS Buckets that triggers a Cloud Workflow when any object in it is finalized. The platform administrator creates a kro ResourceGraphDefinition called *gcsbucketwithfinalizertrigger.kro.run* that defines the required Kubernetes resources and a CRD called *GCSBucketWithFinalizertrigger* that exposes only the options they want to be configurable by end users.
+
+The following KCC objects are created by this RGD:
+* IAMServiceAccount, IAMPolicyMember: Service Account with necessary permissions for Eventarc and Pub/Sub.
+* StorageBucket
+* PubSubTopic
+* EventArcTrigger
+* StorageNotification: To publish events from the GCS bucket to a Pub/Sub topic.
+
+Pre-requisites:
+* Workflow: The workflow to be triggered on Finalizer event.
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GCS EventArc Stack](gcsbucket-with-finalizer-trigger.png)
+
+<!--
+meta {
+  title "GCS Bucket Finalizer Event Processing"
+}
+
+elements {
+  gcp {
+      card iam {
+         name "EventArc, Workflow"
+      }
+      group  storageA {
+        name ""
+        card gcs {
+        name "bucket"
+        }
+        card pubsub {
+        name "finalizer topic"
+        }
+        card eventarc {
+        name "trigger"
+        }
+        card workflows {
+        name "finalizer workflow"
+        }
+      }
+  }
+}
+
+paths {
+  gcs \-\-> pubsub
+  pubsub \-\-> eventarc
+  eventarc \-\-> workflows
+}
+-->
+
+
+
+## End User: GCSBucketWithFinalizerTrigger
+
+The administrator needs to install the RGD first.
+The end user creates a `GCSBucketWithFinalizerTrigger` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GCSBucketWithFinalizerTrigger
+metadata:
+  name: gcsevent-test
+  namespace: config-connector
+spec:
+  name: demo-gcs               # used as name or prefix for KCC objects
+  workflowName: gcs-finalizer-workflow   # Replace with your workflow path
+  location: us-central1        # desired location
+  project: my-project-name     # Replace with your project name
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gcsbucketwithfinalizertrigger -n config-connector
+kubectl get gcsbucketwithfinalizertrigger gcsevent-test -n config-connector -o yaml
+```
+
+Navigate to GCS page in the GCP Console and verify the bucket creation. Also verify that the Triggers are setup correctly in the EventArc page.
+
+Once done, the user can delete the `GCSBucketWithFinalizerTrigger` instance:
+
+```
+kubectl delete gcsbucketwithfinalizertrigger gcsevent-test -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gcsbucketwithfinalizertrigger.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gcsbucketwithfinalizertrigger.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GCSBucketWithFinalizerTrigger
+    spec:
+      name: string
+      workflowName: string
+      location: string
+      project: string
+    status:
+      url: ${bucket.status.url}
+  resources:
+  - id: storageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: storage-enablement
+      spec:
+        resourceID: storage.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: pubsubEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: pubsub-enablement
+      spec:
+        resourceID: pubsub.googleapis.com
+  - id: eventarcEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: eventarc-enablement
+      spec:
+        resourceID: eventarc.googleapis.com
+  - id: iamsa
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMServiceAccount
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        #annotations:
+        #  cnrm.cloud.google.com/project-id: ${schema.spec.project}
+        name: ${schema.spec.name}
+      spec:
+        displayName: ${schema.spec.name}-eventarc-workflow
+  - id: iampmEventarc
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-eventarc
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/eventarc.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: iampmWorkflow
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-workflow
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/workflows.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          enabled-service: ${pubsubEnable.metadata.name}
+        name: ${schema.spec.name}-gcs-finalizer-topic
+  - id: bucket
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageBucket
+      metadata:
+        labels:
+          enabled-service: ${storageEnable.metadata.name}
+        name: ${schema.spec.name}-${schema.spec.project}
+      spec:
+        uniformBucketLevelAccess: true
+  - id: eventTrigger
+    template:
+      apiVersion: eventarc.cnrm.cloud.google.com/v1beta1
+      kind: EventarcTrigger
+      metadata:
+        labels:
+          enabled-service: ${eventarcEnable.metadata.name}
+        name: ${schema.spec.name}-gcsfinalizer
+      spec:
+        destination:
+          workflowRef:
+            external: "projects/${schema.spec.project}/locations/${schema.spec.location}/workflows/${schema.spec.workflowName}"
+        location: ${schema.spec.location}
+        serviceAccountRef:
+          name: ${iamsa.metadata.name}
+        transport:
+          pubsub:
+            topicRef:
+              name: ${topic.metadata.name}
+              namespace: config-connector
+        matchingCriteria:
+        - attribute: "type"
+          value: "google.cloud.pubsub.topic.v1.messagePublished"
+        projectRef:
+          external: "projects/${schema.spec.project}"
+  - id: storageNotification
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageNotification
+      metadata:
+        name: ${schema.spec.name}-gcs
+      spec:
+        bucketRef:
+          name: ${bucket.metadata.name}
+        topicRef:
+          name: ${topic.metadata.name}
+        eventTypes:
+        - "OBJECT_FINALIZE"
+        payloadFormat: JSON_API_V1
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.2.2/examples/gcp/gcsbucket-with-finalizer-trigger.png b/website/versioned_docs/version-0.2.2/examples/gcp/gcsbucket-with-finalizer-trigger.png
new file mode 100644
index 0000000..8bfdd20
Binary files /dev/null and b/website/versioned_docs/version-0.2.2/examples/gcp/gcsbucket-with-finalizer-trigger.png differ
diff --git a/website/versioned_docs/version-0.2.2/examples/gcp/gke-cluster.md b/website/versioned_docs/version-0.2.2/examples/gcp/gke-cluster.md
new file mode 100644
index 0000000..6b4cbd3
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/gcp/gke-cluster.md
@@ -0,0 +1,233 @@
+---
+sidebar_position: 405
+---
+
+# GKECluster
+
+A **Platform Administrator** wants to give end users in their organization self-service access to create GKE clusters. The platform administrator creates a kro ResourceGraphDefinition called *gkecluster.kro.run* that defines the required Kubernetes resources and a CRD called *GKEcluster* that exposes only the options they want to be configurable by end users. The ResourceGraphDefinition would define the following resources (using [KCC](https://github.com/GoogleCloudPlatform/k8s-config-connector) to provide the mappings from K8s CRDs to Google Cloud APIs):
+
+* GKE cluster
+* Container Node Pool
+* Network
+* Subnetwork
+* KMSKeyRing   - Encrypt BootDisk
+* KMSCryptoKey - Encrypt BootDisk
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GKE Cluster Stack](gke-cluster.png)
+
+## End User: GKECluster
+
+The administrator needs to install the RGD first.
+The end user creates a `GKECluster` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GKECluster
+metadata:
+  name: krodemo
+  namespace: config-connector
+spec:
+  name: krodemo         # Name used for all resources created as part of this RGD
+  location: us-central1 # Region where the GCP resources are created
+  maxnodes: 4           # Max scaling limit for the nodes in the new nodepool
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gkeclusters
+kubectl get gkeclusters krodemo -n config-connector -o yaml
+```
+
+Navigate to GKE Cluster page in the GCP Console and verify the cluster creation.
+
+Once done, the user can delete the `GKECluster` instance:
+
+```
+kubectl delete gkecluster krodemo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gkecluster.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gkecluster.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GKECluster
+    spec:
+      name: string
+      nodepool: string
+      maxnodes: integer
+      location: string
+    status:
+      masterVersion: ${cluster.status.masterVersion}
+  resources:
+  - id: network
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeNetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${schema.spec.name}
+      spec:
+        #routingMode: GLOBAL
+        #deleteDefaultRoutesOnCreate: false
+        routingMode: REGIONAL
+        autoCreateSubnetworks: false
+  - id: subnet
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeSubnetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${network.metadata.name}
+      spec:
+        ipCidrRange: 10.2.0.0/16
+        #ipCidrRange: 10.10.90.0/24
+        region: ${schema.spec.location}
+        networkRef:
+          name: ${schema.spec.name}
+        #privateIpGoogleAccess: true
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${subnet.metadata.name}
+  - id: keyring
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${topic.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+  - id: key
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${keyring.metadata.name}
+      spec:
+        keyRingRef:
+          name: ${schema.spec.name}
+        purpose: ASYMMETRIC_SIGN
+        versionTemplate:
+          algorithm: EC_SIGN_P384_SHA384
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: nodepool
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerNodePool
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${cluster.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        autoscaling:
+          minNodeCount: 1
+          maxNodeCount: ${schema.spec.maxnodes}
+        nodeConfig:
+          machineType: n1-standard-1
+          diskSizeGb: 100
+          diskType: pd-standard
+          #taint:
+          #- effect: NO_SCHEDULE
+          #  key: originalKey
+          #  value: originalValue
+        clusterRef:
+          name: ${schema.spec.name}
+  - id: cluster
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerCluster
+      metadata:
+        #annotations:
+        #  cnrm.cloud.google.com/remove-default-node-pool: "false"
+        labels:
+          source: "gkecluster"
+        name: ${key.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        initialNodeCount: 1
+        networkRef:
+          name: ${schema.spec.name}
+        subnetworkRef:
+          name: ${schema.spec.name}
+        ipAllocationPolicy:
+          clusterIpv4CidrBlock: /20
+          servicesIpv4CidrBlock: /20
+        #masterAuth:
+        #  clientCertificateConfig:
+        #    issueClientCertificate: false
+        #workloadIdentityConfig:
+        #  # Workload Identity supports only a single namespace based on your project name.
+        #  # Replace ${PROJECT_ID?} below with your project ID.
+        #  workloadPool: ${PROJECT_ID?}.svc.id.goog      
+        notificationConfig:
+          pubsub:
+            enabled: true
+            topicRef:
+              name: ${schema.spec.name}
+        loggingConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "WORKLOADS"
+        monitoringConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "APISERVER"
+          managedPrometheus:
+            enabled: true
+        clusterAutoscaling:
+          enabled: true
+          autoscalingProfile: BALANCED
+          resourceLimits:
+            - resourceType: cpu
+              maximum: 100
+              minimum: 10
+            - resourceType: memory
+              maximum: 1000
+              minimum: 100
+          autoProvisioningDefaults:
+            bootDiskKMSKeyRef:
+              name: ${schema.spec.name}
+        nodeConfig:
+          linuxNodeConfig:
+            sysctls:
+              net.core.somaxconn: "4096"
+            cgroupMode: "CGROUP_MODE_UNSPECIFIED"
+      
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.2.2/examples/gcp/gke-cluster.png b/website/versioned_docs/version-0.2.2/examples/gcp/gke-cluster.png
new file mode 100644
index 0000000..37eaf08
Binary files /dev/null and b/website/versioned_docs/version-0.2.2/examples/gcp/gke-cluster.png differ
diff --git a/website/versioned_docs/version-0.2.2/examples/kubernetes/category.json b/website/versioned_docs/version-0.2.2/examples/kubernetes/category.json
new file mode 100644
index 0000000..d17bd0a
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/kubernetes/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Kubernetes Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Kubernetes"
+  },
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/website/versioned_docs/version-0.2.2/examples/kubernetes/deploying-coredns.md b/website/versioned_docs/version-0.2.2/examples/kubernetes/deploying-coredns.md
new file mode 100644
index 0000000..d10d654
--- /dev/null
+++ b/website/versioned_docs/version-0.2.2/examples/kubernetes/deploying-coredns.md
@@ -0,0 +1,189 @@
+---
+sidebar_position: 10
+---
+
+# CoreDNS Deployment
+
+```yaml title="coredns-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: coredns.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CoreDNSDeployment
+    spec:
+      name: string | default=mycoredns
+      namespace: string | default=default
+      values:
+        clusterRole:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/bootstrapping": "rbac-defaults"}'
+        clusterRoleBinding:
+          annotations: 'map[string]string | default={"rbac.authorization.kubernetes.io/autoupdate": "\"true\""}'
+        configMap:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns"}'
+        deployment:
+          annotations: 'map[string]string | default={"deployment.kubernetes.io/revision": "\"1\""}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/name": "CoreDNS"}'
+          replicas: integer | default=2
+        image:
+          repository: string | default=coredns/coredns
+          tag: string | default=1.11.3
+        resources:
+          limits:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+          requests:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+        service:
+          annotations: 'map[string]string | default={"prometheus.io/port": "9153", "prometheus.io/scrape": "true"}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "kube-dns", "k8s-app": "kube-dns", "kubernetes.io/cluster-service": "true", "kubernetes.io/name": "CoreDNS"}'
+          clusterIP: string | default=10.100.123.45
+          clusterIPs: '[]string | default=["10.100.123.45"]'
+          ipFamilies: '[]string | default=["IPv4"]'
+          type: string | default=ClusterIP
+        serviceAccount:
+          secrets: 'map[string]string | default={"name": "coredns-token-pvcnf"}'
+  resources:
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - endpoints
+        - services
+        - pods
+        - namespaces
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - discovery.k8s.io
+        resources:
+        - endpointslices
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - nodes
+        verbs:
+        - get
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+        annotations: ${schema.spec.values.clusterRoleBinding.annotations}
+      roleRef:
+        apiGroup: rbac.authorization.k8s.io
+        kind: ClusterRole
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: configMap
+    template:
+      apiVersion: v1
+      kind: ConfigMap
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.configMap.labels}
+      data:
+        Corefile: |-
+          .:53 {
+              errors
+              health
+              kubernetes cluster.local in-addr.arpa ip6.arpa {
+                pods insecure
+                fallthrough in-addr.arpa ip6.arpa
+              }
+              prometheus :9153
+              forward . /etc/resolv.conf
+              cache 30
+              loop
+              reload
+              loadbalance
+          }
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        annotations: ${schema.spec.values.deployment.annotations}
+        labels: ${schema.spec.values.deployment.labels}
+        name: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels: ${schema.spec.values.configMap.labels}
+        template:
+          metadata:
+            labels: ${schema.spec.values.configMap.labels}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - name: "coredns"
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              args: ["-conf", "/etc/coredns/Corefile"]
+              resources: ${schema.spec.values.resources}
+              volumeMounts:
+              - name: config-volume
+                mountPath: /etc/coredns
+            volumes:
+              - name: config-volume
+                configMap:
+                  name: ${schema.spec.name}
+                  items:
+                  - key: Corefile
+                    path: Corefile
+  - id: service
+    template:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.service.labels}
+        annotations: ${schema.spec.values.service.annotations}
+      spec:
+        selector:
+          k8s-app: kube-dns
+        clusterIP: ${schema.spec.values.service.clusterIP}
+        clusterIPs: ${schema.spec.values.service.clusterIPs}
+        internalTrafficPolicy: Cluster
+        ipFamilies: ${schema.spec.values.service.ipFamilies}
+        ports:
+        - name: dns
+          port: 53
+          protocol: UDP
+          targetPort: 53
+        - name: dns-tcp
+          port: 53
+          protocol: TCP
+          targetPort: 53
+        selector:
+         k8s-app: kube-dns
+        sessionAffinity: None
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.name}
+        namespace: ${schema.spec.namespace}
+        labels: ${schema.spec.values.configMap.labels}
+      secrets:
+      - ${schema.spec.values.serviceAccount.secrets}
+```
diff --git a/website/versioned_docs/version-0.3.0/docs/concepts/00-resource-group-definitions.md b/website/versioned_docs/version-0.3.0/docs/concepts/00-resource-group-definitions.md
new file mode 100644
index 0000000..07d2991
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/concepts/00-resource-group-definitions.md
@@ -0,0 +1,201 @@
+---
+sidebar_position: 1
+---
+
+# ResourceGraphDefinitions
+
+ResourceGraphDefinitions are the fundamental building blocks in **kro**. They provide a
+way to define, organize, and manage sets of related Kubernetes resources as a
+single, reusable unit.
+
+## What is a ResourceGraphDefinition?
+
+A **ResourceGraphDefinition** is a custom resource that lets you create new Kubernetes
+APIs for deploying multiple resources together. It acts as a blueprint,
+defining:
+
+- What users can configure (schema)
+- What resources to create (resources)
+- How resources reference each other (dependencies)
+- When resources should be included (conditions)
+- What status to expose (status)
+
+When you create a **ResourceGraphDefinition**, kro generates a new API (a.k.a Custom
+Resource Defintion) in your cluster that others can use to deploy resources in a
+consistent, controlled way.
+
+## Anatomy of a ResourceGraphDefinition
+
+A ResourceGraphDefinition, like any Kubernetes resource, consists of three main parts:
+
+1. **Metadata**: name, namespace, labels, etc.
+2. **Spec**: Defines the structure and properties of the ResourceGraphDefinition
+3. **Status**: Reflects the current state of the ResourceGraphDefinition
+
+The `spec` section of a ResourceGraphDefinition contains two main components:
+
+- **Schema**: Defines what an instance of your API looks like:
+  - What users can configure during creation and update
+  - What status information they can view
+  - Default values and validation rules
+- **Resources**: Specifies the Kubernetes resources to create:
+  - Resource templates
+  - Dependencies between resources
+  - Conditions for inclusion
+  - Readiness criteria
+  - [External References](#resourcegraphdefinition-more-about-resources)
+
+This structure translates to YAML as follows:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-resourcegraphdefinition # Metadata section
+spec:
+  schema: # Define your API
+    apiVersion: v1alpha1 # API version
+    kind: MyAPI # API kind
+    spec: {} # fields users can configure
+    status: {} # fields kro will populate
+
+  # Define the resources kro will manage
+  resources:
+    - id: resource1
+      # declare your resources along with default values and variables
+      template: {}
+```
+
+Let's look at each component in detail...
+
+## Understanding the Schema
+
+The schema section defines your new API's structure. It determines:
+
+- What fields users can configure when creating instances
+- What status information they can view
+- Type validation and default values
+
+Here's an example schema:
+
+```yaml
+schema:
+  apiVersion: v1alpha1
+  kind: WebApplication # This becomes your new API type
+  spec:
+    # Fields users can configure using a simple, straightforward syntax
+    name: string
+    image: string | default="nginx"
+    replicas: integer | default=3
+    ingress:
+      enabled: boolean | default=false
+
+  status:
+    # Fields kro will populate automatically from your resources
+    # Types are inferred from these CEL expressions
+    availableReplicas: ${deployment.status.availableReplicas}
+    conditions: ${deployment.status.conditions}
+
+  validation:
+    # Validating admission policies added to the new API type's CRD
+    - expression: "${ self.image == 'nginx' || !self.ingress.enabled }"
+      message: "Only nginx based applications can have ingress enabled"
+```
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI spec compatible.
+No need to write complex OpenAPI schemas - just define your fields and types in
+a straightforward way. For the complete specification of this format, check out
+the [Simple Schema specification](./10-simple-schema.md). Status fields use CEL
+expressions to reference fields from resources defined in your ResourceGraphDefinition.
+kro automatically:
+
+- Infers the correct types from your expressions
+- Validates that referenced resources exist
+- Updates these fields as your resources change
+
+## ResourceGraphDefinition Processing
+
+When you create a **ResourceGraphDefinition**, kro processes it in several steps to ensure
+correctness and set up the necessary components:
+
+1. **Validation**: kro validates your **ResourceGraphDefinition** to ensure it's well
+   formed and follows the correct syntax, maximizing the chances of successful
+   deployment, and catching as many errors as possible early on. It:
+
+   - Validates your schema definition follows the simple schema format
+   - Ensures all resource templates are valid Kubernetes manifests
+   - Checks that referenced values exist and are of the correct type
+   - Confirms resource dependencies form a valid Directed Acycled Graph(DAG)
+     without cycles
+   - Validates all CEL expressions in status fields and conditions
+
+2. **API Generation**: kro generates and registers a new CRD in your cluster
+   based on your schema. For example, if your **ResourceGraphDefinition** defines a
+   `WebApplication` API, kro creates a CRD that:
+
+   - Provides API validation based on your schema definition
+   - Automatically applies default values you've defined
+   - Makes status information available to users and other systems
+   - Integrates seamlessly with kubectl and other Kubernetes tools
+
+3. **Controller Configuration**: kro configures itself to watch for instances of
+   your new API and:
+
+   - Creates all required resources following the dependency order
+   - Manages references and value passing between resources
+   - Handles the complete lifecycle for create, update, and delete operations
+   - Keeps status information up to date based on actual resource states
+
+For instance, when you create a `WebApplication` ResourceGraphDefinition, kro generates
+the `webapplications.kro.run` CRD. When users create instances of this API, kro
+manages all the underlying resources (Deployments, Services, Custom Resources,
+etc.) automatically.
+
+kro continuously monitors your ResourceGraphDefinition for changes, updating the API and
+its behavior accordingly.
+
+## ResourceGraphDefinition Instance Example
+
+After the **ResourceGraphDefinition** is validated and registered in the cluster, users
+can can create instances of it. Here's an example of how an instance for the
+`WebApplication` might look:
+
+```yaml title="my-web-app-instance.yaml"
+apiVersion: kro.run/v1alpha1
+kind: WebApplication
+metadata:
+  name: my-web-app
+spec:
+  appName: awesome-app
+  image: nginx:latest
+  replicas: 3
+```
+
+## ResourceGraphDefinition More about Resources
+
+Users can specify more controls in resources in `.spec.resources[]` 
+
+```yaml
+spec:
+  resources:
+    - id:
+      template || externalRef:
+      readyWhen:
+      includeWhen:
+```
+
+Using `externalRef` An user can specify if the object is something that is created out-of-band and needs to be referenced in the RGD.
+An external reference could be specified like this:
+```
+resources:
+   id: projectConfig
+   externalRef:
+     apiVersion: corp.platform.com/v1
+     kind: Project
+     metadata:
+       name: default-project
+       namespace: # optional, if empty uses instance namespace
+```
+
+As part of the processing the Resource Graph, the instance reconciler waits for the `externalRef` object to be present and reads the object from the cluster as a node in the graph. Subsequent resources can use data from this node.
diff --git a/website/versioned_docs/version-0.3.0/docs/concepts/10-simple-schema.md b/website/versioned_docs/version-0.3.0/docs/concepts/10-simple-schema.md
new file mode 100644
index 0000000..dbeea50
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/concepts/10-simple-schema.md
@@ -0,0 +1,220 @@
+---
+sidebar_position: 2
+---
+
+# Simple Schema
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI specification
+compatible. Here's a comprehensive example:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: web-application
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: WebApplication
+    spec:
+      # Basic types
+      name: string | required=true description="My Name"
+      replicas: integer | default=1 minimum=1 maximum=100
+      image: string | required=true
+
+      # Structured type
+      ingress:
+        enabled: boolean | default=false
+        host: string | default="example.com"
+        path: string | default="/"
+
+      # Array type
+      ports: "[]integer"
+
+      # Map type
+      env: "map[string]mytype"
+
+    # Custom Types
+    types:
+      myType:
+        value1: string | required=true
+        value2: integer | default=42
+
+    status:
+      # Status fields with auto-inferred types
+      availableReplicas: ${deployment.status.availableReplicas}
+      serviceEndpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Type Definitions
+
+### Basic Types
+
+kro supports these foundational types:
+
+- `string`: Text values
+- `integer`: Whole numbers
+- `boolean`: True/False values
+- `float`: Decimal numbers
+
+For example:
+
+```yaml
+name: string
+age: integer
+enabled: boolean
+price: float
+```
+
+### Structure Types
+
+You can create complex objects by nesting fields. Each field can use any type,
+including other structures:
+
+```yaml
+# Simple structure
+address:
+  street: string
+  city: string
+  zipcode: string
+
+# Nested structures
+user:
+  name: string
+  address: # Nested object
+    street: string
+    city: string
+  contacts: "[]string" # Array of strings
+```
+
+### Array Types
+
+Arrays are denoted using `[]` syntax:
+
+- Basic arrays: `[]string`, `[]integer`, `[]boolean`
+
+Examples:
+
+```yaml
+tags: []string
+ports: []integer
+```
+
+### Map Types
+
+Maps are key-value pairs denoted as `map[keyType]valueType`:
+
+- `map[string]string`: String to string mapping
+- `map[string]integer`: String to integer mapping
+
+Examples:
+
+```yaml
+labels: "map[string]string"
+metrics: "map[string]float"
+```
+
+### Custom Types
+
+Custom types are specified in the separate `types` section.
+They provide a map of names to type specifications, that follow the simple schema.
+
+Example:
+
+```yaml
+schema:
+  types:
+    Person:
+      name: string
+      age: integer
+  spec:
+    people: '[]Person | required=true`
+```
+
+## Validation and Documentation
+
+Fields can have multiple markers for validation and documentation:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+### Supported Markers
+
+- `required=true`: Field must be provided
+- `default=value`: Default value if not specified
+- `description="..."`: Field documentation
+- `enum="value1,value2"`: Allowed values
+- `minimum=value`: Minimum value for numbers
+- `maximum=value`: Maximum value for numbers
+
+Multiple markers can be combined using the `|` separator.
+
+For example:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+price: float | minimum=0.01 maximum=999.99
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+## Status Fields
+
+Status fields use CEL expressions to reference values from resources. kro
+automatically:
+
+- Infers the correct types from the expressions
+- Validates that referenced resources exist
+- Updates values when the underlying resources change
+
+```yaml
+status:
+  # Types are inferred from the referenced fields
+  availableReplicas: ${deployment.status.availableReplicas}
+  endpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Default Status Fields
+
+kro automatically injects two fields to every instance's status:
+
+### 1. Conditions
+
+An array of condition objects tracking the instance's state:
+
+```yaml
+status:
+  conditions:
+    - type: string # e.g., "Ready", "Progressing"
+      status: string # "True", "False", "Unknown"
+      lastTransitionTime: string
+      reason: string
+      message: string
+```
+
+Common condition types:
+
+- `Ready`: Instance is fully reconciled
+- `Progressing`: Working towards desired state
+- `Degraded`: Operational but not optimal
+- `Error`: Reconciliation error occurred
+
+### 2. State
+
+A high-level summary of the instance's status:
+
+```yaml
+status:
+  state: string # Ready, Progressing, Degraded, Unknown, Deleting
+```
+
+:::tip
+
+`conditions` and `state` are reserved words. If defined in your schema, kro will
+override them with its own values.
+
+:::
diff --git a/website/versioned_docs/version-0.3.0/docs/concepts/15-instances.md b/website/versioned_docs/version-0.3.0/docs/concepts/15-instances.md
new file mode 100644
index 0000000..eb9f575
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/concepts/15-instances.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 15
+---
+
+# Instances
+
+Once **kro** processes your ResourceGraphDefinition, it creates a new API in your cluster.
+Users can then create instances of this API to deploy resources in a consistent,
+controlled way.
+
+## Understanding Instances
+
+An instance represents your deployed application. When you create an instance,
+you're telling kro "I want this set of resources running in my cluster". The
+instance contains your configuration values and serves as the single source of
+truth for your application's desired state. Here's an example instance of our
+WebApplication API:
+
+```yaml
+apiVersion: v1alpha1
+kind: WebApplication
+metadata:
+  name: my-app
+spec:
+  name: web-app
+  image: nginx:latest
+  ingress:
+    enabled: true
+```
+
+When you create this instance, kro:
+
+- Creates all required resources (Deployment, Service, Ingress)
+- Configures them according to your specification
+- Manages them as a single unit
+- Keeps their status up to date
+
+## How kro Manages Instances
+
+kro uses the standard Kubernetes reconciliation pattern to manage instances:
+
+1. **Observe**: Watches for changes to your instance or its resources
+2. **Compare**: Checks if current state matches desired state
+3. **Act**: Creates, updates, or deletes resources as needed
+4. **Report**: Updates status to reflect current state
+
+This continuous loop ensures your resources stay in sync with your desired
+state, providing features like:
+
+- Self-healing
+- Automatic updates
+- Consistent state management
+- Status tracking
+
+## Monitoring Your Instances
+
+KRO provides rich status information for every instance:
+
+```bash
+$ kubectl get webapplication my-app
+NAME     STATUS    SYNCED   AGE
+my-app   ACTIVE    true     30s
+```
+
+For detailed status, check the instance's YAML:
+
+```yaml
+status:
+  state: ACTIVE # High-level instance state
+  availableReplicas: 3 # Status from Deployment
+  conditions: # Detailed status conditions
+    - type: Ready
+      status: "True"
+      lastTransitionTime: "2024-07-23T01:01:59Z"
+      reason: ResourcesAvailable
+      message: "All resources are available and configured correctly"
+```
+
+### Understanding Status
+
+Every instance includes:
+
+1. **State**: High-level status
+
+   - `Running`: All resources are ready
+   - `Progressing`: Working towards desired state
+   - `Failed`: Error occurred
+   - `Terminating`: Being deleted
+
+2. **Conditions**: Detailed status information
+
+   - `Ready`: Instance is fully operational
+   - `Progressing`: Changes are being applied
+   - `Degraded`: Operating but not optimal
+   - `Error`: Problems detected
+
+3. **Resource Status**: Status from your resources
+   - Values you defined in your ResourceGraphDefinition's status section
+   - Automatically updated as resources change
+
+## Best Practices
+
+- **Version Control**: Keep your instance definitions in version control
+  alongside your application code. This helps track changes, rollback when
+  needed, and maintain configuration history.
+
+- **Use Labels Effectively**: Add meaningful labels to your instances for better
+  organization, filtering, and integration with other tools. kro propagates
+  labels to the sub resources for easy identification.
+
+- **Active Monitoring**: Regularly check instance status beyond just "Running".
+  Watch conditions, resource status, and events to catch potential issues early
+  and understand your application's health.
+
+- **Regular Reviews**: Periodically review your instance configurations to
+  ensure they reflect current requirements and best practices. Update resource
+  requests, limits, and other configurations as your application needs evolve.
diff --git a/website/versioned_docs/version-0.3.0/docs/concepts/20-access-control.md b/website/versioned_docs/version-0.3.0/docs/concepts/20-access-control.md
new file mode 100644
index 0000000..198555e
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/concepts/20-access-control.md
@@ -0,0 +1,75 @@
+---
+sidebar_position: 20
+---
+
+# Access Control
+
+There are currently two modes of access control supported by **kro**, if you
+[install through the Helm chart](../getting-started/01-Installation.md#install-kro-using-helm):
+
+- `unrestricted`
+
+- `aggregation`
+
+The mode is selected with a `values` property `rbac.mode`, and defaults to `unrestricted`.
+
+## `unrestricted` Access
+
+In the `unrestricted` access mode, the chart includes a `ClusterRole` granting
+**kro** _full control to every resource type in your cluster_. This can be
+useful for experimenting in a test environment, where access control is not
+necessary, but is not recommended in a production environment.
+
+In this mode, anyone with access to create `ResourceGraphDefinition` resources,
+effectively also has admin access to the cluster.
+
+## `aggregation` Access
+
+In the `aggreagation` access mode, the chart includes an [_aggregated_ `ClusterRole`](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles)
+which dynamically includes all rules from all `ClusterRoles` that have the label
+`rbac.kro.run/aggregate-to-controller: "true"`.
+
+There is a very minimal set of permissions provisioned by the chart itself, just
+enough to let **kro** run at all: full permissions for `ResourceGraphDefinition`s
+and its subresources, and full permissions for `CustomResourceDefinitions` as
+**kro** will create them in response to the existence of an RGD.
+
+However, this does _not_ automatically set up permissions for **kro** to actually
+reconcile those generated CRDs! In other words, when using this mode, you will
+need to provision additional access for **kro** for every new resource type you
+define.
+
+### Example
+
+If you want to create a `ResourceGraphDefinition` that specifies a new resource
+type with `kind: Foo`, and where the graph includes an `apps/v1/Deployment` and
+a `v1/ConfigMap`, you will need to create the following `ClusterRole` to ensure
+**kro** has enough access to reconcile your resources:
+
+```yaml
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  labels:
+    rbac.kro.run/aggregate-to-controller: "true"
+  name: kro:controller:foos
+rules:
+  - apiGroups:
+      - kro.run
+    resources:
+      - foos
+    verbs:
+      - "*"
+  - apiGroups:
+      - apps
+    resources:
+      - deployments
+    verbs:
+      - "*"
+  - apiGroups:
+      - ""
+    resources:
+      - configmaps
+    verbs:
+      - "*"
+```
diff --git a/website/versioned_docs/version-0.3.0/docs/concepts/_category_.json b/website/versioned_docs/version-0.3.0/docs/concepts/_category_.json
new file mode 100644
index 0000000..9645894
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/concepts/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Concepts",
+  "position": 40,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.3.0/docs/faq.md b/website/versioned_docs/version-0.3.0/docs/faq.md
new file mode 100644
index 0000000..84bdb51
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/faq.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: "FAQ"
+sidebar_position: 100
+---
+
+# FAQ
+
+1. **What is kro?**
+
+   Kube Resource Orchestrator (**kro**) is a new operator for Kubernetes that
+   simplifies the creation of complex Kubernetes resource configurations. kro
+   lets you create and manage custom groups of Kubernetes resources by defining
+   them as a _ResourceGraphDefinition_, the project's fundamental custom resource.
+   ResourceGraphDefinition specifications define a set of resources and how they relate to
+   each other functionally. Once defined, resource groups can be applied to a
+   Kubernetes cluster where the kro controller is running. Once validated by
+   kro, you can create instances of your resource group. kro translates your
+   ResourceGraphDefinition instance and its parameters into specific Kubernetes resources
+   and configurations which it then manages for you.
+
+2. **How does kro work?**
+
+   kro is designed to use core Kubernetes primitives to make resource grouping,
+   customization, and dependency management simpler. When a ResourceGraphDefinition is
+   applied to the cluster, the kro controller verifies its specification, then
+   dynamically creates a new CRD and registers it with the API server. kro then
+   deploys a dedicated controller to respond to instance events on the CRD. This
+   microcontroller is responsible for managing the lifecycle of resources
+   defined in the ResourceGraphDefinition for each instance that is created.
+
+3. **How do I use kro?**
+
+   First, you define your custom resource groups by creating _ResourceGraphDefinition_
+   specifications. These specify one or more Kubernetes resources, and can
+   include specific configuration for each resource.
+
+   For example, you can define a _WebApp_ resource group that is composed of a
+   _Deployment_, pre-configured to deploy your web server backend, and a
+   _Service_ configured to run on a specific port. You can just as easily create
+   a more complex _WebAppWithDB_ resource group by combining the existing
+   _WebApp_ resource group with a _Table_ custom resource to provision a cloud
+   managed database instance for your web app to use.
+
+   Once you have defined a ResourceGraphDefinition, you can apply it to a Kubernetes
+   cluster where the kro controller is running. kro will take care of the heavy
+   lifting of creating CRDs and deploying dedicated controllers in order to
+   manage instances of your new custom resource group.
+
+   You are now ready to create instances of your new custom resource group, and
+   kro will respond by dynamically creating, configuring, and managing the
+   underlying Kubernetes resources for you.
+
+4. **Why did you build this project?**
+
+   We want to help streamline and simplify building with Kubernetes. Building
+   with Kubernetes means dealing with resources that need to operate and work
+   together, and orchestrating this can get complex and difficult at scale. With
+   this project, we're taking a first step in reducing the complexity of
+   resource dependency management and customization, paving the way for a simple
+   and scalable way to create complex custom resources for Kubernetes.
+
+5. **Can I use this in production?**
+
+   This project is in active development and not yet intended for production
+   use. The _ResourceGraphDefinition_ CRD and other APIs used in this project are not
+   solidified and highly subject to change.
diff --git a/website/versioned_docs/version-0.3.0/docs/getting-started/01-Installation.md b/website/versioned_docs/version-0.3.0/docs/getting-started/01-Installation.md
new file mode 100644
index 0000000..11c9a9c
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/getting-started/01-Installation.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 1
+---
+
+# Installing kro
+
+This guide walks you through the process of installing kro on your Kubernetes
+cluster using Helm.
+
+## Prerequisites
+
+Before you begin, ensure you have the following:
+
+1. `Helm` 3.x installed
+2. `kubectl` installed and configured to interact with your Kubernetes cluster
+
+## Installation Steps
+
+:::info[**Alpha Stage**]
+
+kro is currently in alpha stage. While the images are publicly available, please
+note that the software is still under active development and APIs may change.
+
+:::
+
+### Install kro using Helm
+
+Once authenticated, install kro using the Helm chart:
+
+Fetch the latest release version from GitHub
+```sh
+export KRO_VERSION=$(curl -sL \
+    https://api.github.com/repos/kro-run/kro/releases/latest | \
+    jq -r '.tag_name | ltrimstr("v")'
+  )
+```
+Validate `KRO_VERSION` populated with a version
+```
+echo $KRO_VERSION
+```
+Install kro using Helm
+```
+helm install kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --create-namespace \
+  --version=${KRO_VERSION}
+```
+
+:::info[**Troubleshooting Helm Install**]
+Note that authentication is not required for pulling charts from public GHCR (GitHub Container Registry) repositories.
+
+Helm install download failures occur due to expired local credentials. To resolve this issue, clear your local credentials cache by running `helm registry logout ghcr.io` in your terminal, then retry the installation.
+
+:::
+
+## Verifying the Installation
+
+After running the installation command, verify that Kro has been installed
+correctly:
+
+1. Check the Helm release:
+
+   ```sh
+   helm -n kro list
+   ```
+
+   Expected result: You should see the "kro" release listed.
+   ```
+    NAME	NAMESPACE	REVISION	STATUS  
+    kro 	kro      	1       	deployed
+   ```
+
+2. Check the kro pods:
+   ```sh
+   kubectl get pods -n kro
+   ```
+   Expected result: You should see kro-related pods running.
+   ```
+    NAME                        READY   STATUS             RESTARTS   AGE
+    kro-7d98bc6f46-jvjl5        1/1     Running            0           1s 
+   ```
+
+## Upgrading kro
+
+To upgrade to a newer version of kro, use the Helm upgrade command:
+
+Replace `<new-version>` with the version you want to upgrade to.
+```bash
+export KRO_VERSION=<new-version>
+```
+
+Upgrade the controller
+```
+helm upgrade kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --version=${KRO_VERSION}
+```
+
+:::info[**CRD Updates**]
+
+Helm does not support updating CRDs, so you may need to manually update or
+remove and re-apply kro related CRDs. For more information, refer to the Helm
+documentation.
+
+:::
+
+## Uninstalling kro
+
+To uninstall kro, use the following command:
+
+```bash
+helm uninstall kro -n kro
+```
+
+Keep in mind that this command will remove all kro resources from your cluster,
+except for the ResourceGraphDefinition CRD and any other custom resources you may have
+created.
diff --git a/website/versioned_docs/version-0.3.0/docs/getting-started/02-deploy-a-resource-graph-definition.md b/website/versioned_docs/version-0.3.0/docs/getting-started/02-deploy-a-resource-graph-definition.md
new file mode 100644
index 0000000..58bc12c
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/getting-started/02-deploy-a-resource-graph-definition.md
@@ -0,0 +1,227 @@
+---
+sidebar_position: 2
+---
+
+# Deploy Your First ResourceGraphDefinition
+
+This guide will walk you through creating your first Resource Graph Definition in **kro**.
+We'll create a simple `ResourceGraphDefinition` that demonstrates key kro features.
+
+## What is a **ResourceGraphDefinition**?
+
+A `ResourceGraphDefinition` lets you create new Kubernetes APIs that deploy multiple
+resources together as a single, reusable unit. In this example, we’ll create a
+`ResourceGraphDefinition` that packages a reusable set of resources, including a
+`Deployment`, `Service`, and `Ingress`. These resources are available in any
+Kubernetes cluster. Users can then call the API to deploy resources as a single
+unit, ensuring they're always created together with the right configuration.
+
+Under the hood, when you create a `ResourceGraphDefinition`, kro:
+
+1. Treats your resources as a Directed Acyclic Graph (DAG) to understand their
+   dependencies
+2. Validates resource definitions and detects the correct deployment order
+3. Creates a new API (CRD) in your cluster
+4. Configures itself to watch and serve instances of this API
+
+## Prerequisites
+
+Before you begin, make sure you have the following:
+
+- **kro** [installed](./01-Installation.md) and running in your Kubernetes
+  cluster.
+- `kubectl` installed and configured to interact with your Kubernetes cluster.
+
+## Create your Application ResourceGraphDefinition
+
+Let's create a Resource Graph Definition that combines a `Deployment`, a `Service` and
+`Ingress`. Save this as `resourcegraphdefinition.yaml`:
+
+```yaml title="resourcegraphdefinition.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
+
+### Deploy the ResourceGraphDefinition
+
+1. **Create a ResourceGraphDefinition manifest file**: Create a new file with the
+   `ResourceGraphDefinition` definition. You can use the example above.
+
+2. **Apply the `ResourceGraphDefinition`**: Use the `kubectl` command to deploy the
+   ResourceGraphDefinition to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f resourcegraphdefinition.yaml
+   ```
+
+3. **Inpsect the `ResourceGraphDefinition`**: Check the status of the resources created by
+   the ResourceGraphDefinition using the `kubectl` command:
+
+   ```bash
+   kubectl get rgd my-application -owide
+   ```
+
+   You should see the ResourceGraphDefinition in the `Active` state, along with relevant
+   information to help you understand your application:
+
+   ```bash
+   NAME             APIVERSION   KIND          STATE    TOPOLOGICALORDER                     AGE
+   my-application   v1alpha1     Application   Active   ["deployment","service","ingress"]   49
+   ```
+
+### Create your Application Instance
+
+Now that your `ResourceGraphDefinition` is created, kro has generated a new API
+(Application) that orchestrates creation of the a `Deployment`, a `Service`, and
+an `Ingress`. Let's use it!
+
+1. **Create an Application instance**: Create a new file named `instance.yaml`
+   with the following content:
+
+   ```yaml title="instance.yaml"
+   apiVersion: kro.run/v1alpha1
+   kind: Application
+   metadata:
+     name: my-application-instance
+   spec:
+     name: my-awesome-app
+     ingress:
+       enabled: true
+   ```
+
+2. **Apply the Application instance**: Use the `kubectl` command to deploy the
+   Application instance to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f instance.yaml
+   ```
+
+3. **Inspect the Application instance**: Check the status of the resources
+
+   ```bash
+   kubectl get applications
+   ```
+
+   After a few seconds, you should see the Application instance in the `Active`
+   state:
+
+   ```bash
+   NAME                      STATE    SYNCED   AGE
+   my-application-instance   ACTIVE   True     10s
+   ```
+
+4. **Inspect the resources**: Check the resources created by the Application
+   instance:
+
+   ```bash
+   kubectl get deployments,services,ingresses
+   ```
+
+   You should see the `Deployment`, `Service`, and `Ingress` created by the
+   Application instance.
+
+   ```bash
+   NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
+   deployment.apps/my-awesome-app   3/3     3            3           69s
+
+   NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
+   service/my-awesome-app-service   ClusterIP   10.100.167.72   <none>        80/TCP    65s
+
+   NAME                                               CLASS    HOSTS   ADDRESS   PORTS   AGE
+   ingress.networking.k8s.io/my-awesome-app-ingress   <none>   *                 80      62s
+   ```
+
+### Delete the Application instance
+
+kro can also help you clean up resources when you're done with them.
+
+1. **Delete the Application instance**: Clean up the resources by deleting the
+   Application instance:
+
+   ```bash
+   kubectl delete application my-application-instance
+   ```
+
+   Now, the resources created by the Application instance will be deleted.
diff --git a/website/versioned_docs/version-0.3.0/docs/getting-started/_category_.json b/website/versioned_docs/version-0.3.0/docs/getting-started/_category_.json
new file mode 100644
index 0000000..723093d
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/getting-started/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Getting started",
+  "position": 20,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.3.0/docs/overview.md b/website/versioned_docs/version-0.3.0/docs/overview.md
new file mode 100644
index 0000000..1b314a7
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/overview.md
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.3.0/docs/overview.md.bak b/website/versioned_docs/version-0.3.0/docs/overview.md.bak
new file mode 100644
index 0000000..1b314a7
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/docs/overview.md.bak
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Fugure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Fugure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Fugure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.3.0/examples/aws/ack-eks-cluster.md b/website/versioned_docs/version-0.3.0/examples/aws/ack-eks-cluster.md
new file mode 100644
index 0000000..6de9c75
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/aws/ack-eks-cluster.md
@@ -0,0 +1,222 @@
+---
+sidebar_position: 302
+---
+
+# EKS Cluster
+
+```yaml title="eks.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscluster.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSCluster
+    spec:
+      name: string
+      version: string
+    status:
+      networkingInfo:
+        vpcID: ${clusterVPC.status.vpcID}
+        subnetAZA: ${clusterSubnetA.status.subnetID}
+        subnetAZB: ${clusterSubnetB.status.subnetID}
+      clusterARN: ${cluster.status.ackResourceMetadata.arn}
+  # resources
+  resources:
+    - id: clusterVPC
+      readyWhen:
+        - ${clusterVPC.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: kro-cluster-vpc
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSSupport: true
+          enableDNSHostnames: true
+    - id: clusterElasticIPAddress
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: ElasticIPAddress
+        metadata:
+          name: kro-cluster-eip
+        spec: {}
+    - id: clusterInternetGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: InternetGateway
+        metadata:
+          name: kro-cluster-igw
+        spec:
+          vpc: ${clusterVPC.status.vpcID}
+    - id: clusterRouteTable
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: RouteTable
+        metadata:
+          name: kro-cluster-public-route-table
+        spec:
+          vpcID: ${clusterVPC.status.vpcID}
+          routes:
+            - destinationCIDRBlock: 0.0.0.0/0
+              gatewayID: ${clusterInternetGateway.status.internetGatewayID}
+    - id: clusterSubnetA
+      readyWhen:
+        - ${clusterSubnetA.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet1
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterSubnetB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet2
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterNATGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: NATGateway
+        metadata:
+          name: kro-cluster-natgateway1
+        spec:
+          subnetID: ${clusterSubnetB.status.subnetID}
+          allocationID: ${clusterElasticIPAddress.status.allocationID}
+    - id: clusterRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-role
+        spec:
+          name: kro-cluster-role
+          description: "kro created cluster cluster role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "eks.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterNodeRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-node-role
+        spec:
+          name: kro-cluster-node-role
+          description: "kro created cluster node role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
+            - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
+            - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "ec2.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterAdminRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-pia-role
+        spec:
+          name: kro-cluster-pia-role
+          description: "kro created cluster admin pia role"
+          policies:
+            - arn:aws:iam::aws:policy/AdministratorAccess
+          assumeRolePolicyDocument: |
+            {
+                "Version": "2012-10-17",
+                "Statement": [
+                    {
+                        "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
+                        "Effect": "Allow",
+                        "Principal": {
+                            "Service": "pods.eks.amazonaws.com"
+                        },
+                        "Action": [
+                            "sts:AssumeRole",
+                            "sts:TagSession"
+                        ]
+                    }
+                ]
+            }
+    - id: cluster
+      readyWhen:
+        - ${cluster.status.status == "ACTIVE"}
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Cluster
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          name: ${schema.spec.name}
+          accessConfig:
+            authenticationMode: API_AND_CONFIG_MAP
+          roleARN: ${clusterRole.status.ackResourceMetadata.arn}
+          version: ${schema.spec.version}
+          resourcesVPCConfig:
+            endpointPrivateAccess: false
+            endpointPublicAccess: true
+            subnetIDs:
+              - ${clusterSubnetA.status.subnetID}
+              - ${clusterSubnetB.status.subnetID}
+    - id: clusterNodeGroup
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Nodegroup
+        metadata:
+          name: kro-cluster-nodegroup
+        spec:
+          name: kro-cluster-ng
+          diskSize: 100
+          clusterName: ${cluster.spec.name}
+          subnets:
+            - ${clusterSubnetA.status.subnetID}
+            - ${clusterSubnetB.status.subnetID}
+          nodeRole: ${clusterNodeRole.status.ackResourceMetadata.arn}
+          updateConfig:
+            maxUnavailable: 1
+          scalingConfig:
+            minSize: 1
+            maxSize: 1
+            desiredSize: 1
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/aws/ack-networking-stack.md b/website/versioned_docs/version-0.3.0/examples/aws/ack-networking-stack.md
new file mode 100644
index 0000000..f388171
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/aws/ack-networking-stack.md
@@ -0,0 +1,79 @@
+---
+sidebar_position: 303
+---
+
+# Networking Stack
+
+```yaml title="networking-stack.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: networkingstack.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: NetworkingStack
+    spec:
+      name: string
+    status:
+      networkingInfo:
+        vpcID: ${vpc.status.vpcID}
+        subnetAZA: ${subnetAZA.status.subnetID}
+        subnetAZB: ${subnetAZB.status.subnetID}
+        subnetAZC: ${subnetAZC.status.subnetID}
+        securityGroup: ${securityGroup.status.id}
+  # resources
+  resources:
+    - id: vpc
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: vpc-${schema.spec.name}
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSHostnames: false
+          enableDNSSupport: true
+    - id: subnetAZA
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-a-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-b-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZC
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-c-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2c
+          cidrBlock: 192.168.128.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: securityGroup
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: cluster-security-group-${schema.spec.name}
+        spec:
+          vpcID: ${vpc.status.vpcID}
+          name: my-sg-${schema.spec.name}
+          description: something something
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/aws/ack-valkey-cachecluster.md b/website/versioned_docs/version-0.3.0/examples/aws/ack-valkey-cachecluster.md
new file mode 100644
index 0000000..46c0b53
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/aws/ack-valkey-cachecluster.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 304
+---
+
+# Valkey cluster
+
+```yaml title="valkey-cachecluster.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: valkey.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: Valkey
+    spec:
+      name: string
+    status:
+      csgARN: ${cacheSubnetGroup.status.ackResourceMetadata.arn}
+      subnets: ${cacheSubnetGroup.status.subnets}
+      clusterARN: ${valkey.status.ackResourceMetadata.arn}
+  resources:
+    - id: networkingStack
+      template:
+        apiVersion: kro.run/v1alpha1
+        kind: NetworkingStack
+        metadata:
+          name: ${schema.spec.name}-networking-stack
+        spec:
+          name: ${schema.spec.name}-networking-stack
+    - id: cacheSubnetGroup
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheSubnetGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-subnet-group
+        spec:
+          cacheSubnetGroupDescription: "Valkey ElastiCache subnet group"
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          subnetIDs:
+            - ${networkingStack.status.networkingInfo.subnetAZA}
+            - ${networkingStack.status.networkingInfo.subnetAZB}
+            - ${networkingStack.status.networkingInfo.subnetAZC}
+    - id: sg
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-sg
+        spec:
+          name: ${schema.spec.name}-valkey-sg
+          description: "Valkey ElastiCache security group"
+          vpcID: ${networkingStack.status.networkingInfo.vpcID}
+          ingressRules:
+            - fromPort: 6379
+              toPort: 6379
+              ipProtocol: tcp
+              ipRanges:
+                - cidrIP: 0.0.0.0/0
+    - id: valkey
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheCluster
+        metadata:
+          name: ${schema.spec.name}-valkey
+        spec:
+          cacheClusterID: vote-valkey-cluster
+          cacheNodeType: cache.t3.micro
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          engine: valkey
+          engineVersion: "8.x"
+          numCacheNodes: 1
+          port: 6379
+          securityGroupIDs:
+            - ${sg.status.id}
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/aws/aws-examples.md b/website/versioned_docs/version-0.3.0/examples/aws/aws-examples.md
new file mode 100644
index 0000000..71c1709
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/aws/aws-examples.md
@@ -0,0 +1,28 @@
+---
+sidebar_position: 301
+---
+
+:::info[**ACK controllers Dependency**]
+Most examples below will need ACK controllers to be running in the cluster either through kro or other means.
+:::
+
+# AWS Examples
+- [Deploying a Controller](./deploying-controller.md) Discover how to deploy a
+  Kubernetes controller using kro ResourceGraphDefinitions, including the necessary
+  Deployment, ServiceAccount, and CRDs.
+
+- [AWS Networking Stack](./ack-networking-stack.md) Learn how to define and
+  manage an AWS networking stack using kro ResourceGraphDefinitions, including VPCs,
+  subnets, and security groups.
+
+- [EKS Cluster with ACK CRDs](./ack-eks-cluster.md) Explore how to define and
+  manage an EKS cluster using AWS Controllers for Kubernetes (ACK) CRDs within a
+  kro ResourceGraphDefinition.
+
+- [Valkey CacheCluster with ACK CRDs](./ack-valkey-cachecluster.md) Learn how to
+  create and configure a Valkey CacheCluster using ACK CRDs in a kro
+  ResourceGraphDefinition.
+
+- [Pod and RDS DBInstance](./pod-rds-dbinstance.md) Deploy a Pod and an RDS
+  DBInstance in a kro ResourceGraphDefinition, showcasing the use of multiple resources
+  with dependencies.
diff --git a/website/versioned_docs/version-0.3.0/examples/aws/category.json b/website/versioned_docs/version-0.3.0/examples/aws/category.json
new file mode 100644
index 0000000..ce984a9
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/aws/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "AWS Examples",
+  "position": 300,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with AWS"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
diff --git a/website/versioned_docs/version-0.3.0/examples/aws/deploying-controller.md b/website/versioned_docs/version-0.3.0/examples/aws/deploying-controller.md
new file mode 100644
index 0000000..331fe1a
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/aws/deploying-controller.md
@@ -0,0 +1,297 @@
+---
+sidebar_position: 305
+---
+
+# Controller Deployment
+
+```yaml title="controller-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscontrollers.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSController
+    spec:
+      name: string | default=eks-controller
+      namespace: string | default=default
+      values:
+        aws:
+          accountID: string | required=true
+          region: string | default=us-west-2
+        deployment:
+          containerPort: integer | default=8080
+          replicas: integer | default=1
+        iamRole:
+          maxSessionDuration: integer | default=3600
+          oidcProvider: string | required=true
+          roleDescription: string | default=IRSA role for ACK EKS controller deployement on EKS cluster using kro Resource group
+        iamPolicy:
+          # would prefer to add a policyDocument here, need to support multiline string here
+          description: string | default="policy for eks controller"
+        image:
+          deletePolicy: string | default=delete
+          repository: string | default=public.ecr.aws/aws-controllers-k8s/eks-controller
+          tag: string | default=1.4.7
+          resources:
+            requests:
+              memory: string | default=64Mi
+              cpu: string | default=50m
+            limits:
+              memory: string | default=128Mi
+              cpu: string | default=100m
+        log:
+          enabled: boolean | default=false
+          level: string | default=info
+        serviceAccount:
+          name: string | default=eks-controller-sa
+  resources:
+  - id: eksCRDGroup
+    template:
+      apiVersion: kro.run/v1alpha1
+      kind: EKSCRDGroup
+      metadata:
+        name: ${schema.spec.name}-crd-group
+      spec:
+        name: ${schema.spec.name}-crd-group
+  - id: eksControllerIamPolicy
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Policy
+      metadata:
+        name: ${schema.spec.name}-iam-policy
+      spec:
+        name: ${schema.spec.name}-iam-policy
+        description: ${schema.spec.values.iamPolicy.description}
+        policyDocument: >
+          {
+            "Version": "2012-10-17",
+            "Statement": [
+              {
+                "Sid": "VisualEditor0",
+                "Effect": "Allow",
+                "Action": [
+                  "eks:*",
+                  "iam:GetRole",
+                  "iam:PassRole",
+                  "iam:ListAttachedRolePolicies",
+                  "ec2:DescribeSubnets"
+                ],
+                "Resource": "*"
+              }
+            ]
+          }
+  - id: eksControllerIamRole
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Role
+      metadata:
+        name: ${schema.spec.name}-iam-role
+        namespace: ${schema.spec.namespace}
+      spec:
+        name: ${schema.spec.name}-iam-role
+        description: ${schema.spec.values.iamRole.roleDescription}
+        maxSessionDuration: ${schema.spec.values.iamRole.maxSessionDuration}
+        policies:
+        - ${eksControllerIamPolicy.status.ackResourceMetadata.arn}
+        assumeRolePolicyDocument: >
+          {
+            "Version":"2012-10-17",
+            "Statement": [{
+              "Effect":"Allow",
+              "Principal": {"Federated": "arn:aws:iam::${schema.spec.values.aws.accountID}:oidc-provider/${schema.spec.values.iamRole.oidcProvider}"},
+              "Action": ["sts:AssumeRoleWithWebIdentity"],
+              "Condition": {
+                "StringEquals": {"${schema.spec.values.iamRole.oidcProvider}:sub": "system:serviceaccount:${schema.spec.namespace}:${schema.spec.values.serviceAccount.name}"}
+              }
+            }]
+          }
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.values.serviceAccount.name}
+        namespace: ${schema.spec.namespace}
+        annotations:
+          eks.amazonaws.com/role-arn : ${eksControllerIamRole.status.ackResourceMetadata.arn}
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        name: ${schema.spec.name}-deployment
+        namespace: ${schema.spec.namespace}
+        labels:
+          app.kubernetes.io.name: ${schema.spec.name}-deployment
+          app.kubernetes.io.instance: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels:
+            app.kubernetes.io.name: ${schema.spec.name}-deployment
+            app.kubernetes.io.instance: ${schema.spec.name}
+        template:
+          metadata:
+            labels:
+              app.kubernetes.io.name: ${schema.spec.name}-deployment
+              app.kubernetes.io.instance: ${schema.spec.name}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - command:
+              - ./bin/controller
+              args:
+              - --aws-region
+              - ${schema.spec.values.aws.region}
+              - --enable-development-logging=${schema.spec.values.log.enabled}
+              - --log-level
+              - ${schema.spec.values.log.level}
+              - --deletion-policy
+              - ${schema.spec.values.image.deletePolicy}
+              - --watch-namespace
+              - ${schema.spec.namespace}
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              name: controller
+              ports:
+                - name: http
+                  containerPort: ${schema.spec.values.deployment.containerPort}
+              resources:
+                requests:
+                  memory: ${schema.spec.values.image.resources.requests.memory}
+                  cpu: ${schema.spec.values.image.resources.requests.cpu}
+                limits:
+                    memory: ${schema.spec.values.image.resources.limits.memory}
+                    cpu: ${schema.spec.values.image.resources.limits.cpu}
+              env:
+              - name: ACK_SYSTEM_NAMESPACE
+                value: ${schema.spec.namespace}
+              - name: AWS_REGION
+                value: ${schema.spec.values.aws.region}
+              - name: DELETE_POLICY
+                value: ${schema.spec.values.image.deletePolicy}
+              - name: ACK_LOG_LEVEL
+                value: ${schema.spec.values.log.level}
+              ports:
+              - containerPort: 80
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}-clusterrolebinding
+      roleRef:
+        kind: ClusterRole
+        apiGroup: rbac.authorization.k8s.io
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}-clusterrole
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - configmaps
+        - secrets
+        verbs:
+        - get
+        - list
+        - patch
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - namespaces
+        verbs:
+        - get
+        - list
+        - watch
+      - apiGroups:
+        - ec2.services.k8s.aws
+        resources:
+        - securitygroups
+        - securitygroups/status
+        - subnets
+        - subnets/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries
+        - addons
+        - clusters
+        - fargateprofiles
+        - identityproviderconfigs
+        - nodegroups
+        - podidentityassociations
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries/status
+        - addons/status
+        - clusters/status
+        - fargateprofiles/status
+        - identityproviderconfigs/status
+        - nodegroups/status
+        - podidentityassociations/status
+        verbs:
+        - get
+        - patch
+        - update
+      - apiGroups:
+        - iam.services.k8s.aws
+        resources:
+        - roles
+        - roles/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - kms.services.k8s.aws
+        resources:
+        - keys
+        - keys/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources
+        - fieldexports
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources/status
+        - fieldexports/status
+        verbs:
+        - get
+        - patch
+        - update
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/aws/pod-rds-dbinstance.md b/website/versioned_docs/version-0.3.0/examples/aws/pod-rds-dbinstance.md
new file mode 100644
index 0000000..3b06711
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/aws/pod-rds-dbinstance.md
@@ -0,0 +1,50 @@
+---
+sidebar_position: 306
+---
+
+# Pod with RDS DBInstance
+
+```yaml title="deploymentdbinstance-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentandawspostgres
+spec:
+  # CRD Definition
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentAndAWSPostgres
+    spec:
+      applicationName: string
+      image: string
+      location: string
+
+  # Resources
+  resources:
+    - id: dbinstance
+      template:
+        apiVersion: rds.services.k8s.aws/v1alpha1
+        kind: DBInstance
+        metadata:
+          name: ${schema.spec.applicationName}-dbinstance
+        spec:
+          # need to specify the required fields (e.g masterUsername, masterPassword)
+          engine: postgres
+          dbInstanceIdentifier: ${schema.spec.applicationName}-dbinstance
+          allocatedStorage: 20
+          dbInstanceClass: db.t3.micro
+
+    - id: pod
+      template:
+        apiVersion: v1
+        kind: Pod
+        metadata:
+          name: ${schema.spec.applicationName}-pod
+        spec:
+          containers:
+            - name: container1
+              image: ${schema.spec.image}
+              env:
+                - name: POSTGRESS_ENDPOINT
+                  value: ${dbinstance.status.endpoint.address}
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/azure/category.json b/website/versioned_docs/version-0.3.0/examples/azure/category.json
new file mode 100644
index 0000000..2298240
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/azure/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Azure Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Microsoft Azure"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.3.0/examples/basic/category.json b/website/versioned_docs/version-0.3.0/examples/basic/category.json
new file mode 100644
index 0000000..0216728
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/basic/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Basic Examples",
+  "position": 100,
+  "link": {
+    "type": "generated-index",
+    "description": "Basic examples to get started with Kro"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.3.0/examples/basic/noop.md b/website/versioned_docs/version-0.3.0/examples/basic/noop.md
new file mode 100644
index 0000000..3258bcb
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/basic/noop.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 101
+---
+
+# Empty ResourceGraphDefinition
+
+```yaml title="noop.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: noop
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: NoOp
+    spec:
+      name: string | required=true
+  resources: []
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/basic/web-app-ingress.md b/website/versioned_docs/version-0.3.0/examples/basic/web-app-ingress.md
new file mode 100644
index 0000000..2767fca
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/basic/web-app-ingress.md
@@ -0,0 +1,92 @@
+---
+sidebar_position: 102
+---
+
+# Web Application w/ Ingress
+
+```yaml title="webapp-ingress.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/basic/web-app.md b/website/versioned_docs/version-0.3.0/examples/basic/web-app.md
new file mode 100644
index 0000000..6619310
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/basic/web-app.md
@@ -0,0 +1,53 @@
+---
+sidebar_position: 103
+---
+
+# Web Application
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentservice
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentService
+    spec:
+      name: string
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-deployment
+                  image: nginx
+                  ports:
+                    - containerPort: 80
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          selector:
+            app: deployment
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+```
diff --git a/website/versioned_docs/version-0.3.0/examples/examples.md b/website/versioned_docs/version-0.3.0/examples/examples.md
new file mode 100644
index 0000000..e1dcadc
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/examples.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 0
+---
+
+# Examples
+
+This section provides a collection of examples demonstrating how to define and
+use ResourceGraphDefinitions in **kro** for various scenarios. Each example showcases a
+specific use case and includes a detailed explanation along with the
+corresponding YAML definitions.
+
+## Basic Examples
+
+- [Empty ResourceGraphDefinition (Noop)](./basic/noop.md) Explore the simplest form of a
+  ResourceGraphDefinition that doesn't define any resources, serving as a reference for
+  the basic structure.
+
+- [Simple Web Application](./basic/web-app.md) Deploy a basic web application with a
+  Deployment and Service.
+
+- [Web Application with Ingress](./basic/web-app-ingress.md) Extend the basic web
+  application example to include an optional Ingress resource for external
+  access.
+
+## Advanced Examples
+
+- [Deploying CoreDNS](./kubernetes/deploying-coredns.md) Learn how to deploy CoreDNS in a
+  Kubernetes cluster using kro ResourceGraphDefinitions, including the necessary
+  Deployment, Service, and ConfigMap.
diff --git a/website/versioned_docs/version-0.3.0/examples/gcp/category.json b/website/versioned_docs/version-0.3.0/examples/gcp/category.json
new file mode 100644
index 0000000..4277df4
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/gcp/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "GCP Examples",
+  "position": 400,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Google Cloud Platform"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.3.0/examples/gcp/cloud-sql.md b/website/versioned_docs/version-0.3.0/examples/gcp/cloud-sql.md
new file mode 100644
index 0000000..c3eb689
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/gcp/cloud-sql.md
@@ -0,0 +1,274 @@
+---
+sidebar_position: 406
+---
+
+# CloudSQL
+
+This example show how you can use KRO to deploy GCP Cloud SQL instance in 2 regions as a primary and replica instances.
+
+
+## End User: CloudSQL
+The administrator needs to install the RGD first.
+The end user creates a `CloudSQL` resource that looks like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: CloudSQL
+metadata:
+  name: demo
+  namespace: config-connector
+spec:
+  name: demo
+  project: my-gcp-project
+  primaryRegion: us-central1
+  replicaRegion: us-west1
+```
+
+The status of the applied resource can be checked using:
+
+```
+kubectl get cloudsqls
+kubectl get cloudsql demo -n config-connector -o yaml
+```
+
+Navigate to CloudSQL page in the GCP Console and verify the creation of primary and replica instances.
+
+Once done, the user can delete the `CloudSQL` instance:
+
+```
+kubectl delete cloudsql demo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+> kubectl get rgd cloudsql.kro.run
+NAME               APIVERSION   KIND       STATE    AGE
+cloudsql.kro.run   v1alpha1     CloudSQL   Active   44m
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: cloudsql.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CloudSQL
+    spec:
+      name: string
+      project: string
+      primaryRegion: string
+      replicaRegion: string
+    status:
+      connectionName: ${sqlPrimary.status.connectionName}
+      ipAddress: ${sqlPrimary.status.firstIpAddress}
+  resources:
+  - id: cloudkmsEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: cloudkms-enablement
+      spec:
+        resourceID: cloudkms.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: serviceUsageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: serviceusage-enablement
+      spec:
+        resourceID: serviceusage.googleapis.com
+  - id: sqlAdminEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: sqladmin-enablement
+      spec:
+        resourceID: sqladmin.googleapis.com
+  - id: serviceidentity
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: ServiceIdentity
+      metadata:
+        labels:
+          enabled-service: ${serviceUsageEnable.metadata.name}
+        name: sqladmin.googleapis.com
+      spec:
+        projectRef:
+          external: ${schema.spec.project}
+  - id: keyringPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        location: ${schema.spec.primaryRegion}
+  - id: keyringReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        location: ${schema.spec.replicaRegion}
+  - id: kmskeyPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.primaryRegion}
+        name: ${schema.spec.name}-primary
+      spec:
+        keyRingRef:
+          name: ${keyringPrimary.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: kmskeyReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.replicaRegion}
+        name: ${schema.spec.name}-replica
+      spec:
+        keyRingRef:
+          name: ${keyringReplica.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: iampolicymemberPrimary
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: sql-kms-${schema.spec.primaryRegion}-policybinding
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyPrimary.metadata.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: iampolicymemberReplica
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        name: sql-kms-${schema.spec.replicaRegion}-policybinding
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyReplica.metadata.name}-replica
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: sqlPrimary
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.primaryRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.primaryRegion}/keyRings/${keyringPrimary.metadata.name}/cryptoKeys/${kmskeyPrimary.metadata.name}
+        region: ${schema.spec.primaryRegion}
+        settings:
+          availabilityType: REGIONAL
+          backupConfiguration:
+            backupRetentionSettings:
+              retainedBackups: 6
+            enabled: true
+            location: us
+          diskSize: 50
+          diskType: PD_SSD
+          maintenanceWindow:
+            day: 7
+            hour: 3
+          tier: db-custom-8-30720
+  - id: sqlReplica
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.replicaRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.replicaRegion}/keyRings/${keyringReplica.metadata.name}/cryptoKeys/${kmskeyReplica.metadata.name}
+        masterInstanceRef:
+          name: ${schema.spec.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        region: ${schema.spec.replicaRegion}
+        settings:
+          availabilityType: REGIONAL
+          diskSize: 50
+          diskType: PD_SSD
+          tier: db-custom-8-30720
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.3.0/examples/gcp/eventarc.md b/website/versioned_docs/version-0.3.0/examples/gcp/eventarc.md
new file mode 100644
index 0000000..5ff9517
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/gcp/eventarc.md
@@ -0,0 +1,273 @@
+---
+sidebar_position: 407
+---
+
+# GCSBucketWithFinalizerTrigger
+
+A **Platform Administrator** wants to give end users in their organization self-service access to creating GCS Buckets that triggers a Cloud Workflow when any object in it is finalized. The platform administrator creates a kro ResourceGraphDefinition called *gcsbucketwithfinalizertrigger.kro.run* that defines the required Kubernetes resources and a CRD called *GCSBucketWithFinalizertrigger* that exposes only the options they want to be configurable by end users.
+
+The following KCC objects are created by this RGD:
+* IAMServiceAccount, IAMPolicyMember: Service Account with necessary permissions for Eventarc and Pub/Sub.
+* StorageBucket
+* PubSubTopic
+* EventArcTrigger
+* StorageNotification: To publish events from the GCS bucket to a Pub/Sub topic.
+
+Pre-requisites:
+* Workflow: The workflow to be triggered on Finalizer event.
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GCS EventArc Stack](gcsbucket-with-finalizer-trigger.png)
+
+<!--
+meta {
+  title "GCS Bucket Finalizer Event Processing"
+}
+
+elements {
+  gcp {
+      card iam {
+         name "EventArc, Workflow"
+      }
+      group  storageA {
+        name ""
+        card gcs {
+        name "bucket"
+        }
+        card pubsub {
+        name "finalizer topic"
+        }
+        card eventarc {
+        name "trigger"
+        }
+        card workflows {
+        name "finalizer workflow"
+        }
+      }
+  }
+}
+
+paths {
+  gcs \-\-> pubsub
+  pubsub \-\-> eventarc
+  eventarc \-\-> workflows
+}
+-->
+
+
+
+## End User: GCSBucketWithFinalizerTrigger
+
+The administrator needs to install the RGD first.
+The end user creates a `GCSBucketWithFinalizerTrigger` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GCSBucketWithFinalizerTrigger
+metadata:
+  name: gcsevent-test
+  namespace: config-connector
+spec:
+  name: demo-gcs               # used as name or prefix for KCC objects
+  workflowName: gcs-finalizer-workflow   # Replace with your workflow path
+  location: us-central1        # desired location
+  project: my-project-name     # Replace with your project name
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gcsbucketwithfinalizertrigger -n config-connector
+kubectl get gcsbucketwithfinalizertrigger gcsevent-test -n config-connector -o yaml
+```
+
+Navigate to GCS page in the GCP Console and verify the bucket creation. Also verify that the Triggers are setup correctly in the EventArc page.
+
+Once done, the user can delete the `GCSBucketWithFinalizerTrigger` instance:
+
+```
+kubectl delete gcsbucketwithfinalizertrigger gcsevent-test -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gcsbucketwithfinalizertrigger.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gcsbucketwithfinalizertrigger.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GCSBucketWithFinalizerTrigger
+    spec:
+      name: string
+      workflowName: string
+      location: string
+      project: string
+    status:
+      url: ${bucket.status.url}
+  resources:
+  - id: storageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: storage-enablement
+      spec:
+        resourceID: storage.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: pubsubEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: pubsub-enablement
+      spec:
+        resourceID: pubsub.googleapis.com
+  - id: eventarcEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: eventarc-enablement
+      spec:
+        resourceID: eventarc.googleapis.com
+  - id: iamsa
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMServiceAccount
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        #annotations:
+        #  cnrm.cloud.google.com/project-id: ${schema.spec.project}
+        name: ${schema.spec.name}
+      spec:
+        displayName: ${schema.spec.name}-eventarc-workflow
+  - id: iampmEventarc
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-eventarc
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/eventarc.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: iampmWorkflow
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-workflow
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/workflows.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          enabled-service: ${pubsubEnable.metadata.name}
+        name: ${schema.spec.name}-gcs-finalizer-topic
+  - id: bucket
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageBucket
+      metadata:
+        labels:
+          enabled-service: ${storageEnable.metadata.name}
+        name: ${schema.spec.name}-${schema.spec.project}
+      spec:
+        uniformBucketLevelAccess: true
+  - id: eventTrigger
+    template:
+      apiVersion: eventarc.cnrm.cloud.google.com/v1beta1
+      kind: EventarcTrigger
+      metadata:
+        labels:
+          enabled-service: ${eventarcEnable.metadata.name}
+        name: ${schema.spec.name}-gcsfinalizer
+      spec:
+        destination:
+          workflowRef:
+            external: "projects/${schema.spec.project}/locations/${schema.spec.location}/workflows/${schema.spec.workflowName}"
+        location: ${schema.spec.location}
+        serviceAccountRef:
+          name: ${iamsa.metadata.name}
+        transport:
+          pubsub:
+            topicRef:
+              name: ${topic.metadata.name}
+              namespace: config-connector
+        matchingCriteria:
+        - attribute: "type"
+          value: "google.cloud.pubsub.topic.v1.messagePublished"
+        projectRef:
+          external: "projects/${schema.spec.project}"
+  - id: storageNotification
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageNotification
+      metadata:
+        name: ${schema.spec.name}-gcs
+      spec:
+        bucketRef:
+          name: ${bucket.metadata.name}
+        topicRef:
+          name: ${topic.metadata.name}
+        eventTypes:
+        - "OBJECT_FINALIZE"
+        payloadFormat: JSON_API_V1
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.3.0/examples/gcp/gcsbucket-with-finalizer-trigger.png b/website/versioned_docs/version-0.3.0/examples/gcp/gcsbucket-with-finalizer-trigger.png
new file mode 100644
index 0000000..8bfdd20
Binary files /dev/null and b/website/versioned_docs/version-0.3.0/examples/gcp/gcsbucket-with-finalizer-trigger.png differ
diff --git a/website/versioned_docs/version-0.3.0/examples/gcp/gke-cluster.md b/website/versioned_docs/version-0.3.0/examples/gcp/gke-cluster.md
new file mode 100644
index 0000000..6b4cbd3
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/gcp/gke-cluster.md
@@ -0,0 +1,233 @@
+---
+sidebar_position: 405
+---
+
+# GKECluster
+
+A **Platform Administrator** wants to give end users in their organization self-service access to create GKE clusters. The platform administrator creates a kro ResourceGraphDefinition called *gkecluster.kro.run* that defines the required Kubernetes resources and a CRD called *GKEcluster* that exposes only the options they want to be configurable by end users. The ResourceGraphDefinition would define the following resources (using [KCC](https://github.com/GoogleCloudPlatform/k8s-config-connector) to provide the mappings from K8s CRDs to Google Cloud APIs):
+
+* GKE cluster
+* Container Node Pool
+* Network
+* Subnetwork
+* KMSKeyRing   - Encrypt BootDisk
+* KMSCryptoKey - Encrypt BootDisk
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GKE Cluster Stack](gke-cluster.png)
+
+## End User: GKECluster
+
+The administrator needs to install the RGD first.
+The end user creates a `GKECluster` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GKECluster
+metadata:
+  name: krodemo
+  namespace: config-connector
+spec:
+  name: krodemo         # Name used for all resources created as part of this RGD
+  location: us-central1 # Region where the GCP resources are created
+  maxnodes: 4           # Max scaling limit for the nodes in the new nodepool
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gkeclusters
+kubectl get gkeclusters krodemo -n config-connector -o yaml
+```
+
+Navigate to GKE Cluster page in the GCP Console and verify the cluster creation.
+
+Once done, the user can delete the `GKECluster` instance:
+
+```
+kubectl delete gkecluster krodemo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gkecluster.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gkecluster.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GKECluster
+    spec:
+      name: string
+      nodepool: string
+      maxnodes: integer
+      location: string
+    status:
+      masterVersion: ${cluster.status.masterVersion}
+  resources:
+  - id: network
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeNetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${schema.spec.name}
+      spec:
+        #routingMode: GLOBAL
+        #deleteDefaultRoutesOnCreate: false
+        routingMode: REGIONAL
+        autoCreateSubnetworks: false
+  - id: subnet
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeSubnetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${network.metadata.name}
+      spec:
+        ipCidrRange: 10.2.0.0/16
+        #ipCidrRange: 10.10.90.0/24
+        region: ${schema.spec.location}
+        networkRef:
+          name: ${schema.spec.name}
+        #privateIpGoogleAccess: true
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${subnet.metadata.name}
+  - id: keyring
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${topic.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+  - id: key
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${keyring.metadata.name}
+      spec:
+        keyRingRef:
+          name: ${schema.spec.name}
+        purpose: ASYMMETRIC_SIGN
+        versionTemplate:
+          algorithm: EC_SIGN_P384_SHA384
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: nodepool
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerNodePool
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${cluster.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        autoscaling:
+          minNodeCount: 1
+          maxNodeCount: ${schema.spec.maxnodes}
+        nodeConfig:
+          machineType: n1-standard-1
+          diskSizeGb: 100
+          diskType: pd-standard
+          #taint:
+          #- effect: NO_SCHEDULE
+          #  key: originalKey
+          #  value: originalValue
+        clusterRef:
+          name: ${schema.spec.name}
+  - id: cluster
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerCluster
+      metadata:
+        #annotations:
+        #  cnrm.cloud.google.com/remove-default-node-pool: "false"
+        labels:
+          source: "gkecluster"
+        name: ${key.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        initialNodeCount: 1
+        networkRef:
+          name: ${schema.spec.name}
+        subnetworkRef:
+          name: ${schema.spec.name}
+        ipAllocationPolicy:
+          clusterIpv4CidrBlock: /20
+          servicesIpv4CidrBlock: /20
+        #masterAuth:
+        #  clientCertificateConfig:
+        #    issueClientCertificate: false
+        #workloadIdentityConfig:
+        #  # Workload Identity supports only a single namespace based on your project name.
+        #  # Replace ${PROJECT_ID?} below with your project ID.
+        #  workloadPool: ${PROJECT_ID?}.svc.id.goog      
+        notificationConfig:
+          pubsub:
+            enabled: true
+            topicRef:
+              name: ${schema.spec.name}
+        loggingConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "WORKLOADS"
+        monitoringConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "APISERVER"
+          managedPrometheus:
+            enabled: true
+        clusterAutoscaling:
+          enabled: true
+          autoscalingProfile: BALANCED
+          resourceLimits:
+            - resourceType: cpu
+              maximum: 100
+              minimum: 10
+            - resourceType: memory
+              maximum: 1000
+              minimum: 100
+          autoProvisioningDefaults:
+            bootDiskKMSKeyRef:
+              name: ${schema.spec.name}
+        nodeConfig:
+          linuxNodeConfig:
+            sysctls:
+              net.core.somaxconn: "4096"
+            cgroupMode: "CGROUP_MODE_UNSPECIFIED"
+      
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.3.0/examples/gcp/gke-cluster.png b/website/versioned_docs/version-0.3.0/examples/gcp/gke-cluster.png
new file mode 100644
index 0000000..37eaf08
Binary files /dev/null and b/website/versioned_docs/version-0.3.0/examples/gcp/gke-cluster.png differ
diff --git a/website/versioned_docs/version-0.3.0/examples/kubernetes/category.json b/website/versioned_docs/version-0.3.0/examples/kubernetes/category.json
new file mode 100644
index 0000000..d17bd0a
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/kubernetes/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Kubernetes Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Kubernetes"
+  },
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/website/versioned_docs/version-0.3.0/examples/kubernetes/deploying-coredns.md b/website/versioned_docs/version-0.3.0/examples/kubernetes/deploying-coredns.md
new file mode 100644
index 0000000..d10d654
--- /dev/null
+++ b/website/versioned_docs/version-0.3.0/examples/kubernetes/deploying-coredns.md
@@ -0,0 +1,189 @@
+---
+sidebar_position: 10
+---
+
+# CoreDNS Deployment
+
+```yaml title="coredns-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: coredns.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CoreDNSDeployment
+    spec:
+      name: string | default=mycoredns
+      namespace: string | default=default
+      values:
+        clusterRole:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/bootstrapping": "rbac-defaults"}'
+        clusterRoleBinding:
+          annotations: 'map[string]string | default={"rbac.authorization.kubernetes.io/autoupdate": "\"true\""}'
+        configMap:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns"}'
+        deployment:
+          annotations: 'map[string]string | default={"deployment.kubernetes.io/revision": "\"1\""}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/name": "CoreDNS"}'
+          replicas: integer | default=2
+        image:
+          repository: string | default=coredns/coredns
+          tag: string | default=1.11.3
+        resources:
+          limits:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+          requests:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+        service:
+          annotations: 'map[string]string | default={"prometheus.io/port": "9153", "prometheus.io/scrape": "true"}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "kube-dns", "k8s-app": "kube-dns", "kubernetes.io/cluster-service": "true", "kubernetes.io/name": "CoreDNS"}'
+          clusterIP: string | default=10.100.123.45
+          clusterIPs: '[]string | default=["10.100.123.45"]'
+          ipFamilies: '[]string | default=["IPv4"]'
+          type: string | default=ClusterIP
+        serviceAccount:
+          secrets: 'map[string]string | default={"name": "coredns-token-pvcnf"}'
+  resources:
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - endpoints
+        - services
+        - pods
+        - namespaces
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - discovery.k8s.io
+        resources:
+        - endpointslices
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - nodes
+        verbs:
+        - get
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+        annotations: ${schema.spec.values.clusterRoleBinding.annotations}
+      roleRef:
+        apiGroup: rbac.authorization.k8s.io
+        kind: ClusterRole
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: configMap
+    template:
+      apiVersion: v1
+      kind: ConfigMap
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.configMap.labels}
+      data:
+        Corefile: |-
+          .:53 {
+              errors
+              health
+              kubernetes cluster.local in-addr.arpa ip6.arpa {
+                pods insecure
+                fallthrough in-addr.arpa ip6.arpa
+              }
+              prometheus :9153
+              forward . /etc/resolv.conf
+              cache 30
+              loop
+              reload
+              loadbalance
+          }
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        annotations: ${schema.spec.values.deployment.annotations}
+        labels: ${schema.spec.values.deployment.labels}
+        name: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels: ${schema.spec.values.configMap.labels}
+        template:
+          metadata:
+            labels: ${schema.spec.values.configMap.labels}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - name: "coredns"
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              args: ["-conf", "/etc/coredns/Corefile"]
+              resources: ${schema.spec.values.resources}
+              volumeMounts:
+              - name: config-volume
+                mountPath: /etc/coredns
+            volumes:
+              - name: config-volume
+                configMap:
+                  name: ${schema.spec.name}
+                  items:
+                  - key: Corefile
+                    path: Corefile
+  - id: service
+    template:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.service.labels}
+        annotations: ${schema.spec.values.service.annotations}
+      spec:
+        selector:
+          k8s-app: kube-dns
+        clusterIP: ${schema.spec.values.service.clusterIP}
+        clusterIPs: ${schema.spec.values.service.clusterIPs}
+        internalTrafficPolicy: Cluster
+        ipFamilies: ${schema.spec.values.service.ipFamilies}
+        ports:
+        - name: dns
+          port: 53
+          protocol: UDP
+          targetPort: 53
+        - name: dns-tcp
+          port: 53
+          protocol: TCP
+          targetPort: 53
+        selector:
+         k8s-app: kube-dns
+        sessionAffinity: None
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.name}
+        namespace: ${schema.spec.namespace}
+        labels: ${schema.spec.values.configMap.labels}
+      secrets:
+      - ${schema.spec.values.serviceAccount.secrets}
+```
diff --git a/website/versioned_docs/version-0.4.0/docs/concepts/00-resource-group-definitions.md b/website/versioned_docs/version-0.4.0/docs/concepts/00-resource-group-definitions.md
new file mode 100644
index 0000000..67dee2a
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/concepts/00-resource-group-definitions.md
@@ -0,0 +1,210 @@
+---
+sidebar_position: 1
+---
+
+# ResourceGraphDefinitions
+
+ResourceGraphDefinitions are the fundamental building blocks in **kro**. They provide a
+way to define, organize, and manage sets of related Kubernetes resources as a
+single, reusable unit.
+
+## What is a ResourceGraphDefinition?
+
+A **ResourceGraphDefinition** is a custom resource that lets you create new Kubernetes
+APIs for deploying multiple resources together. It acts as a blueprint,
+defining:
+
+- What users can configure (schema)
+- What resources to create (resources)
+- How resources reference each other (dependencies)
+- When resources should be included (conditions)
+- What status to expose (status)
+
+When you create a **ResourceGraphDefinition**, kro generates a new API (a.k.a Custom
+Resource Definition) in your cluster that others can use to deploy resources in a
+consistent, controlled way.
+
+## Anatomy of a ResourceGraphDefinition
+
+A ResourceGraphDefinition, like any Kubernetes resource, consists of three main parts:
+
+1. **Metadata**: name, namespace, labels, etc.
+2. **Spec**: Defines the structure and properties of the ResourceGraphDefinition
+3. **Status**: Reflects the current state of the ResourceGraphDefinition
+
+The `spec` section of a ResourceGraphDefinition contains two main components:
+
+- **Schema**: Defines what an instance of your API looks like:
+  - What users can configure during creation and update
+  - What status information they can view
+  - Default values and validation rules
+- **Resources**: Specifies the Kubernetes resources to create:
+  - Resource templates
+  - Dependencies between resources
+  - Conditions for inclusion
+  - Readiness criteria
+  - [External References](#resourcegraphdefinition-more-about-resources)
+
+This structure translates to YAML as follows:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-resourcegraphdefinition # Metadata section
+spec:
+  schema: # Define your API
+    apiVersion: v1alpha1 # API version
+    kind: MyAPI # API kind
+    spec: {} # fields users can configure
+    status: {} # fields kro will populate
+
+  # Define the resources kro will manage
+  resources:
+    - id: resource1
+      # declare your resources along with default values and variables
+      template: {}
+```
+
+Let's look at each component in detail...
+
+## Understanding the Schema
+
+The schema section defines your new API's structure. It determines:
+
+- What fields users can configure when creating instances
+- What status information they can view
+- Type validation and default values
+
+Here's an example schema:
+
+```yaml
+schema:
+  apiVersion: v1alpha1
+  kind: WebApplication # This becomes your new API type
+  spec:
+    # Fields users can configure using a simple, straightforward syntax
+    name: string
+    image: string | default="nginx"
+    replicas: integer | default=3
+    ingress:
+      enabled: boolean | default=false
+
+  status:
+    # Fields kro will populate automatically from your resources
+    # Types are inferred from these CEL expressions
+    availableReplicas: ${deployment.status.availableReplicas}
+    conditions: ${deployment.status.conditions}
+
+  validation:
+    # Validating admission policies added to the new API type's CRD
+    - expression: "${ self.image == 'nginx' || !self.ingress.enabled }"
+      message: "Only nginx based applications can have ingress enabled"
+
+  additionalPrinterColumns:
+    # Printer columns shown for the created custom resource
+    - jsonPath: .status.availableReplicas
+      name: Available replicas
+      type: integer
+    - jsonPath: .spec.image
+      name: Image
+      type: string
+```
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI spec compatible.
+No need to write complex OpenAPI schemas - just define your fields and types in
+a straightforward way. For the complete specification of this format, check out
+the [Simple Schema specification](./10-simple-schema.md). Status fields use CEL
+expressions to reference fields from resources defined in your ResourceGraphDefinition.
+kro automatically:
+
+- Infers the correct types from your expressions
+- Validates that referenced resources exist
+- Updates these fields as your resources change
+
+## ResourceGraphDefinition Processing
+
+When you create a **ResourceGraphDefinition**, kro processes it in several steps to ensure
+correctness and set up the necessary components:
+
+1. **Validation**: kro validates your **ResourceGraphDefinition** to ensure it's well
+   formed and follows the correct syntax, maximizing the chances of successful
+   deployment, and catching as many errors as possible early on. It:
+
+   - Validates your schema definition follows the simple schema format
+   - Ensures all resource templates are valid Kubernetes manifests
+   - Checks that referenced values exist and are of the correct type
+   - Confirms resource dependencies form a valid Directed Acyclic Graph(DAG)
+     without cycles
+   - Validates all CEL expressions in status fields and conditions
+
+2. **API Generation**: kro generates and registers a new CRD in your cluster
+   based on your schema. For example, if your **ResourceGraphDefinition** defines a
+   `WebApplication` API, kro creates a CRD that:
+
+   - Provides API validation based on your schema definition
+   - Automatically applies default values you've defined
+   - Makes status information available to users and other systems
+   - Integrates seamlessly with kubectl and other Kubernetes tools
+
+3. **Controller Configuration**: kro configures itself to watch for instances of
+   your new API and:
+
+   - Creates all required resources following the dependency order
+   - Manages references and value passing between resources
+   - Handles the complete lifecycle for create, update, and delete operations
+   - Keeps status information up to date based on actual resource states
+
+For instance, when you create a `WebApplication` ResourceGraphDefinition, kro generates
+the `webapplications.kro.run` CRD. When users create instances of this API, kro
+manages all the underlying resources (Deployments, Services, Custom Resources,
+etc.) automatically.
+
+kro continuously monitors your ResourceGraphDefinition for changes, updating the API and
+its behavior accordingly.
+
+## ResourceGraphDefinition Instance Example
+
+After the **ResourceGraphDefinition** is validated and registered in the cluster, users
+can create instances of it. Here's an example of how an instance for the
+`WebApplication` might look:
+
+```yaml title="my-web-app-instance.yaml"
+apiVersion: kro.run/v1alpha1
+kind: WebApplication
+metadata:
+  name: my-web-app
+spec:
+  appName: awesome-app
+  image: nginx:latest
+  replicas: 3
+```
+
+## ResourceGraphDefinition More about Resources
+
+Users can specify more controls in resources in `.spec.resources[]` 
+
+```yaml
+spec:
+  resources:
+    - id:
+      template || externalRef:
+      readyWhen:
+      includeWhen:
+```
+
+Using `externalRef` An user can specify if the object is something that is created out-of-band and needs to be referenced in the RGD.
+An external reference could be specified like this:
+```
+resources:
+   id: projectConfig
+   externalRef:
+     apiVersion: corp.platform.com/v1
+     kind: Project
+     metadata:
+       name: default-project
+       namespace: # optional, if empty uses instance namespace
+```
+
+As part of processing the Resource Graph, the instance reconciler waits for the `externalRef` object to be present and reads the object from the cluster as a node in the graph. Subsequent resources can use data from this node.
diff --git a/website/versioned_docs/version-0.4.0/docs/concepts/10-simple-schema.md b/website/versioned_docs/version-0.4.0/docs/concepts/10-simple-schema.md
new file mode 100644
index 0000000..05dee21
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/concepts/10-simple-schema.md
@@ -0,0 +1,239 @@
+---
+sidebar_position: 2
+---
+
+# Simple Schema
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI specification
+compatible. Here's a comprehensive example:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: web-application
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: WebApplication
+    spec:
+      # Basic types
+      name: string | required=true description="My Name"
+      replicas: integer | default=1 minimum=1 maximum=100
+      image: string | required=true
+
+      # Structured type
+      ingress:
+        enabled: boolean | default=false
+        host: string | default="example.com"
+        path: string | default="/"
+
+      # Array type
+      ports: "[]integer"
+
+      # Map type
+      env: "map[string]mytype"
+
+    # Custom Types
+    types:
+      myType:
+        value1: string | required=true
+        value2: integer | default=42
+
+    status:
+      # Status fields with auto-inferred types
+      availableReplicas: ${deployment.status.availableReplicas}
+      serviceEndpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Type Definitions
+
+### Basic Types
+
+kro supports these foundational types:
+
+- `string`: Text values
+- `integer`: Whole numbers
+- `boolean`: True/False values
+- `float`: Decimal numbers
+
+For example:
+
+```yaml
+name: string
+age: integer
+enabled: boolean
+price: float
+```
+
+### Structure Types
+
+You can create complex objects by nesting fields. Each field can use any type,
+including other structures:
+
+```yaml
+# Simple structure
+address:
+  street: string
+  city: string
+  zipcode: string
+
+# Nested structures
+user:
+  name: string
+  address: # Nested object
+    street: string
+    city: string
+  contacts: "[]string" # Array of strings
+```
+
+### Array Types
+
+Arrays are denoted using `[]` syntax:
+
+- Basic arrays: `[]string`, `[]integer`, `[]boolean`
+
+Examples:
+
+```yaml
+tags: []string
+ports: []integer
+```
+
+### Map Types
+
+Maps are key-value pairs denoted as `map[keyType]valueType`:
+
+- `map[string]string`: String to string mapping
+- `map[string]integer`: String to integer mapping
+
+Examples:
+
+```yaml
+labels: "map[string]string"
+metrics: "map[string]float"
+```
+
+### Custom Types
+
+Custom types are specified in the separate `types` section.
+They provide a map of names to type specifications that follow the simple schema.
+
+Example:
+
+```yaml
+schema:
+  types:
+    Person:
+      name: string
+      age: integer
+  spec:
+    people: '[]Person | required=true`
+```
+
+## Validation and Documentation
+
+Fields can have multiple markers for validation and documentation:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+### Supported Markers
+
+- `required=true`: Field must be provided
+- `default=value`: Default value if not specified
+- `description="..."`: Field documentation
+- `enum="value1,value2"`: Allowed values
+- `minimum=value`: Minimum value for numbers
+- `maximum=value`: Maximum value for numbers
+
+Multiple markers can be combined using the `|` separator.
+
+For example:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+price: float | minimum=0.01 maximum=999.99
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+## Status Fields
+
+Status fields use CEL expressions to reference values from resources. kro
+automatically:
+
+- Infers the correct types from the expressions
+- Validates that referenced resources exist
+- Updates values when the underlying resources change
+
+```yaml
+status:
+  # Types are inferred from the referenced fields
+  availableReplicas: ${deployment.status.availableReplicas}
+  endpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Default Status Fields
+
+kro automatically injects two fields to every instance's status:
+
+### 1. Conditions
+
+An array of condition objects tracking the instance's state:
+
+```yaml
+status:
+  conditions:
+    - type: string # e.g., "Ready", "Progressing"
+      status: string # "True", "False", "Unknown"
+      lastTransitionTime: string
+      reason: string
+      message: string
+```
+
+Common condition types:
+
+- `Ready`: Instance is fully reconciled
+- `Progressing`: Working towards desired state
+- `Degraded`: Operational but not optimal
+- `Error`: Reconciliation error occurred
+
+### 2. State
+
+A high-level summary of the instance's status:
+
+```yaml
+status:
+  state: string # Ready, Progressing, Degraded, Unknown, Deleting
+```
+
+:::tip
+
+`conditions` and `state` are reserved words. If defined in your schema, kro will
+override them with its own values.
+
+:::
+
+## Additional Printer Columns
+
+You can define `additionalPrinterColumns` for the created CRD through the ResourceGraphDefinition by setting them on `spec.schema.additionalPrinterColumns`.
+
+```yaml
+schema:
+  spec:
+    image: string | default="nginx"
+  status:
+      availableReplicas: ${deployment.status.availableReplicas}
+  additionalPrinterColumns:
+    - jsonPath: .status.availableReplicas
+      name: Available replicas
+      type: integer
+    - jsonPath: .spec.image
+      name: Image
+      type: string
+```
diff --git a/website/versioned_docs/version-0.4.0/docs/concepts/15-instances.md b/website/versioned_docs/version-0.4.0/docs/concepts/15-instances.md
new file mode 100644
index 0000000..eb9f575
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/concepts/15-instances.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 15
+---
+
+# Instances
+
+Once **kro** processes your ResourceGraphDefinition, it creates a new API in your cluster.
+Users can then create instances of this API to deploy resources in a consistent,
+controlled way.
+
+## Understanding Instances
+
+An instance represents your deployed application. When you create an instance,
+you're telling kro "I want this set of resources running in my cluster". The
+instance contains your configuration values and serves as the single source of
+truth for your application's desired state. Here's an example instance of our
+WebApplication API:
+
+```yaml
+apiVersion: v1alpha1
+kind: WebApplication
+metadata:
+  name: my-app
+spec:
+  name: web-app
+  image: nginx:latest
+  ingress:
+    enabled: true
+```
+
+When you create this instance, kro:
+
+- Creates all required resources (Deployment, Service, Ingress)
+- Configures them according to your specification
+- Manages them as a single unit
+- Keeps their status up to date
+
+## How kro Manages Instances
+
+kro uses the standard Kubernetes reconciliation pattern to manage instances:
+
+1. **Observe**: Watches for changes to your instance or its resources
+2. **Compare**: Checks if current state matches desired state
+3. **Act**: Creates, updates, or deletes resources as needed
+4. **Report**: Updates status to reflect current state
+
+This continuous loop ensures your resources stay in sync with your desired
+state, providing features like:
+
+- Self-healing
+- Automatic updates
+- Consistent state management
+- Status tracking
+
+## Monitoring Your Instances
+
+KRO provides rich status information for every instance:
+
+```bash
+$ kubectl get webapplication my-app
+NAME     STATUS    SYNCED   AGE
+my-app   ACTIVE    true     30s
+```
+
+For detailed status, check the instance's YAML:
+
+```yaml
+status:
+  state: ACTIVE # High-level instance state
+  availableReplicas: 3 # Status from Deployment
+  conditions: # Detailed status conditions
+    - type: Ready
+      status: "True"
+      lastTransitionTime: "2024-07-23T01:01:59Z"
+      reason: ResourcesAvailable
+      message: "All resources are available and configured correctly"
+```
+
+### Understanding Status
+
+Every instance includes:
+
+1. **State**: High-level status
+
+   - `Running`: All resources are ready
+   - `Progressing`: Working towards desired state
+   - `Failed`: Error occurred
+   - `Terminating`: Being deleted
+
+2. **Conditions**: Detailed status information
+
+   - `Ready`: Instance is fully operational
+   - `Progressing`: Changes are being applied
+   - `Degraded`: Operating but not optimal
+   - `Error`: Problems detected
+
+3. **Resource Status**: Status from your resources
+   - Values you defined in your ResourceGraphDefinition's status section
+   - Automatically updated as resources change
+
+## Best Practices
+
+- **Version Control**: Keep your instance definitions in version control
+  alongside your application code. This helps track changes, rollback when
+  needed, and maintain configuration history.
+
+- **Use Labels Effectively**: Add meaningful labels to your instances for better
+  organization, filtering, and integration with other tools. kro propagates
+  labels to the sub resources for easy identification.
+
+- **Active Monitoring**: Regularly check instance status beyond just "Running".
+  Watch conditions, resource status, and events to catch potential issues early
+  and understand your application's health.
+
+- **Regular Reviews**: Periodically review your instance configurations to
+  ensure they reflect current requirements and best practices. Update resource
+  requests, limits, and other configurations as your application needs evolve.
diff --git a/website/versioned_docs/version-0.4.0/docs/concepts/20-access-control.md b/website/versioned_docs/version-0.4.0/docs/concepts/20-access-control.md
new file mode 100644
index 0000000..eb5878c
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/concepts/20-access-control.md
@@ -0,0 +1,75 @@
+---
+sidebar_position: 20
+---
+
+# Access Control
+
+There are currently two modes of access control supported by **kro**, if you
+[install through the Helm chart](../getting-started/01-Installation.md#install-kro-using-helm):
+
+- `unrestricted`
+
+- `aggregation`
+
+The mode is selected with a `values` property `rbac.mode`, and defaults to `unrestricted`.
+
+## `unrestricted` Access
+
+In the `unrestricted` access mode, the chart includes a `ClusterRole` granting
+**kro** _full control to every resource type in your cluster_. This can be
+useful for experimenting in a test environment, where access control is not
+necessary, but is not recommended in a production environment.
+
+In this mode, anyone with access to create `ResourceGraphDefinition` resources,
+effectively also has admin access to the cluster.
+
+## `aggregation` Access
+
+In the `aggregation` access mode, the chart includes an [_aggregated_ `ClusterRole`](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles)
+which dynamically includes all rules from all `ClusterRoles` that have the label
+`rbac.kro.run/aggregate-to-controller: "true"`.
+
+There is a very minimal set of permissions provisioned by the chart itself, just
+enough to let **kro** run at all: full permissions for `ResourceGraphDefinition`s
+and its subresources, and full permissions for `CustomResourceDefinitions` as
+**kro** will create them in response to the existence of an RGD.
+
+However, this does _not_ automatically set up permissions for **kro** to actually
+reconcile those generated CRDs! In other words, when using this mode, you will
+need to provision additional access for **kro** for every new resource type you
+define.
+
+### Example
+
+If you want to create a `ResourceGraphDefinition` that specifies a new resource
+type with `kind: Foo`, and where the graph includes an `apps/v1/Deployment` and
+a `v1/ConfigMap`, you will need to create the following `ClusterRole` to ensure
+**kro** has enough access to reconcile your resources:
+
+```yaml
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  labels:
+    rbac.kro.run/aggregate-to-controller: "true"
+  name: kro:controller:foos
+rules:
+  - apiGroups:
+      - kro.run
+    resources:
+      - foos
+    verbs:
+      - "*"
+  - apiGroups:
+      - apps
+    resources:
+      - deployments
+    verbs:
+      - "*"
+  - apiGroups:
+      - ""
+    resources:
+      - configmaps
+    verbs:
+      - "*"
+```
diff --git a/website/versioned_docs/version-0.4.0/docs/concepts/_category_.json b/website/versioned_docs/version-0.4.0/docs/concepts/_category_.json
new file mode 100644
index 0000000..9645894
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/concepts/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Concepts",
+  "position": 40,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.4.0/docs/faq.md b/website/versioned_docs/version-0.4.0/docs/faq.md
new file mode 100644
index 0000000..84bdb51
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/faq.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: "FAQ"
+sidebar_position: 100
+---
+
+# FAQ
+
+1. **What is kro?**
+
+   Kube Resource Orchestrator (**kro**) is a new operator for Kubernetes that
+   simplifies the creation of complex Kubernetes resource configurations. kro
+   lets you create and manage custom groups of Kubernetes resources by defining
+   them as a _ResourceGraphDefinition_, the project's fundamental custom resource.
+   ResourceGraphDefinition specifications define a set of resources and how they relate to
+   each other functionally. Once defined, resource groups can be applied to a
+   Kubernetes cluster where the kro controller is running. Once validated by
+   kro, you can create instances of your resource group. kro translates your
+   ResourceGraphDefinition instance and its parameters into specific Kubernetes resources
+   and configurations which it then manages for you.
+
+2. **How does kro work?**
+
+   kro is designed to use core Kubernetes primitives to make resource grouping,
+   customization, and dependency management simpler. When a ResourceGraphDefinition is
+   applied to the cluster, the kro controller verifies its specification, then
+   dynamically creates a new CRD and registers it with the API server. kro then
+   deploys a dedicated controller to respond to instance events on the CRD. This
+   microcontroller is responsible for managing the lifecycle of resources
+   defined in the ResourceGraphDefinition for each instance that is created.
+
+3. **How do I use kro?**
+
+   First, you define your custom resource groups by creating _ResourceGraphDefinition_
+   specifications. These specify one or more Kubernetes resources, and can
+   include specific configuration for each resource.
+
+   For example, you can define a _WebApp_ resource group that is composed of a
+   _Deployment_, pre-configured to deploy your web server backend, and a
+   _Service_ configured to run on a specific port. You can just as easily create
+   a more complex _WebAppWithDB_ resource group by combining the existing
+   _WebApp_ resource group with a _Table_ custom resource to provision a cloud
+   managed database instance for your web app to use.
+
+   Once you have defined a ResourceGraphDefinition, you can apply it to a Kubernetes
+   cluster where the kro controller is running. kro will take care of the heavy
+   lifting of creating CRDs and deploying dedicated controllers in order to
+   manage instances of your new custom resource group.
+
+   You are now ready to create instances of your new custom resource group, and
+   kro will respond by dynamically creating, configuring, and managing the
+   underlying Kubernetes resources for you.
+
+4. **Why did you build this project?**
+
+   We want to help streamline and simplify building with Kubernetes. Building
+   with Kubernetes means dealing with resources that need to operate and work
+   together, and orchestrating this can get complex and difficult at scale. With
+   this project, we're taking a first step in reducing the complexity of
+   resource dependency management and customization, paving the way for a simple
+   and scalable way to create complex custom resources for Kubernetes.
+
+5. **Can I use this in production?**
+
+   This project is in active development and not yet intended for production
+   use. The _ResourceGraphDefinition_ CRD and other APIs used in this project are not
+   solidified and highly subject to change.
diff --git a/website/versioned_docs/version-0.4.0/docs/getting-started/01-Installation.md b/website/versioned_docs/version-0.4.0/docs/getting-started/01-Installation.md
new file mode 100644
index 0000000..0551cb6
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/getting-started/01-Installation.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 1
+---
+
+# Installing kro
+
+This guide walks you through the process of installing kro on your Kubernetes
+cluster using Helm.
+
+## Prerequisites
+
+Before you begin, ensure you have the following:
+
+1. `Helm` 3.x installed
+2. `kubectl` installed and configured to interact with your Kubernetes cluster
+
+## Installation Steps
+
+:::info[**Alpha Stage**]
+
+kro is currently in alpha stage. While the images are publicly available, please
+note that the software is still under active development and APIs may change.
+
+:::
+
+### Install kro using Helm
+
+Once authenticated, install kro using the Helm chart:
+
+Fetch the latest release version from GitHub
+```sh
+export KRO_VERSION=$(curl -sL \
+    https://api.github.com/repos/kro-run/kro/releases/latest | \
+    jq -r '.tag_name | ltrimstr("v")'
+  )
+```
+Validate `KRO_VERSION` populated with a version
+```
+echo $KRO_VERSION
+```
+Install kro using Helm
+```
+helm install kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --create-namespace \
+  --version=${KRO_VERSION}
+```
+
+:::info[**Troubleshooting Helm Install**]
+Note that authentication is not required for pulling charts from public GHCR (GitHub Container Registry) repositories.
+
+Helm install download failures occur due to expired local credentials. To resolve this issue, clear your local credentials cache by running `helm registry logout ghcr.io` in your terminal, then retry the installation.
+
+:::
+
+## Verifying the Installation
+
+After running the installation command, verify that Kro has been installed
+correctly:
+
+1. Check the Helm release:
+
+   ```sh
+   helm -n kro list
+   ```
+
+   Expected result: You should see the "kro" release listed.
+   ```
+    NAME	NAMESPACE	REVISION	STATUS  
+    kro 	kro      	1       	deployed
+   ```
+
+2. Check the kro pods:
+   ```sh
+   kubectl get pods -n kro
+   ```
+   Expected result: You should see kro-related pods running.
+   ```
+    NAME                        READY   STATUS             RESTARTS   AGE
+    kro-7d98bc6f46-jvjl5        1/1     Running            0           1s 
+   ```
+
+## Upgrading kro
+
+To upgrade to a newer version of kro, use the Helm upgrade command:
+
+Replace `<new-version>` with the version you want to upgrade to.
+```bash
+export KRO_VERSION=<new-version>
+```
+
+Upgrade the controller
+```
+helm upgrade kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --version=${KRO_VERSION}
+```
+
+:::info[**CRD Updates**]
+
+Helm does not support updating CRDs, so you may need to manually update or
+remove and reapply kro related CRDs. For more information, refer to the Helm
+documentation.
+
+:::
+
+## Uninstalling kro
+
+To uninstall kro, use the following command:
+
+```bash
+helm uninstall kro -n kro
+```
+
+Keep in mind that this command will remove all kro resources from your cluster,
+except for the ResourceGraphDefinition CRD and any other custom resources you may have
+created.
diff --git a/website/versioned_docs/version-0.4.0/docs/getting-started/02-deploy-a-resource-graph-definition.md b/website/versioned_docs/version-0.4.0/docs/getting-started/02-deploy-a-resource-graph-definition.md
new file mode 100644
index 0000000..6ab9eb5
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/getting-started/02-deploy-a-resource-graph-definition.md
@@ -0,0 +1,227 @@
+---
+sidebar_position: 2
+---
+
+# Deploy Your First ResourceGraphDefinition
+
+This guide will walk you through creating your first Resource Graph Definition in **kro**.
+We'll create a simple `ResourceGraphDefinition` that demonstrates key kro features.
+
+## What is a **ResourceGraphDefinition**?
+
+A `ResourceGraphDefinition` lets you create new Kubernetes APIs that deploy multiple
+resources together as a single, reusable unit. In this example, we’ll create a
+`ResourceGraphDefinition` that packages a reusable set of resources, including a
+`Deployment`, `Service`, and `Ingress`. These resources are available in any
+Kubernetes cluster. Users can then call the API to deploy resources as a single
+unit, ensuring they're always created together with the right configuration.
+
+Under the hood, when you create a `ResourceGraphDefinition`, kro:
+
+1. Treats your resources as a Directed Acyclic Graph (DAG) to understand their
+   dependencies
+2. Validates resource definitions and detects the correct deployment order
+3. Creates a new API (CRD) in your cluster
+4. Configures itself to watch and serve instances of this API
+
+## Prerequisites
+
+Before you begin, make sure you have the following:
+
+- **kro** [installed](./01-Installation.md) and running in your Kubernetes
+  cluster.
+- `kubectl` installed and configured to interact with your Kubernetes cluster.
+
+## Create your Application ResourceGraphDefinition
+
+Let's create a Resource Graph Definition that combines a `Deployment`, a `Service` and
+`Ingress`. Save this as `resourcegraphdefinition.yaml`:
+
+```yaml title="resourcegraphdefinition.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
+
+### Deploy the ResourceGraphDefinition
+
+1. **Create a ResourceGraphDefinition manifest file**: Create a new file with the
+   `ResourceGraphDefinition` definition. You can use the example above.
+
+2. **Apply the `ResourceGraphDefinition`**: Use the `kubectl` command to deploy the
+   ResourceGraphDefinition to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f resourcegraphdefinition.yaml
+   ```
+
+3. **Inspect the `ResourceGraphDefinition`**: Check the status of the resources created by
+   the ResourceGraphDefinition using the `kubectl` command:
+
+   ```bash
+   kubectl get rgd my-application -owide
+   ```
+
+   You should see the ResourceGraphDefinition in the `Active` state, along with relevant
+   information to help you understand your application:
+
+   ```bash
+   NAME             APIVERSION   KIND          STATE    TOPOLOGICALORDER                     AGE
+   my-application   v1alpha1     Application   Active   ["deployment","service","ingress"]   49
+   ```
+
+### Create your Application Instance
+
+Now that your `ResourceGraphDefinition` is created, kro has generated a new API
+(Application) that orchestrates the creation of a `Deployment`, a `Service`, and
+an `Ingress`. Let's use it!
+
+1. **Create an Application instance**: Create a new file named `instance.yaml`
+   with the following content:
+
+   ```yaml title="instance.yaml"
+   apiVersion: kro.run/v1alpha1
+   kind: Application
+   metadata:
+     name: my-application-instance
+   spec:
+     name: my-awesome-app
+     ingress:
+       enabled: true
+   ```
+
+2. **Apply the Application instance**: Use the `kubectl` command to deploy the
+   Application instance to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f instance.yaml
+   ```
+
+3. **Inspect the Application instance**: Check the status of the resources
+
+   ```bash
+   kubectl get applications
+   ```
+
+   After a few seconds, you should see the Application instance in the `Active`
+   state:
+
+   ```bash
+   NAME                      STATE    SYNCED   AGE
+   my-application-instance   ACTIVE   True     10s
+   ```
+
+4. **Inspect the resources**: Check the resources created by the Application
+   instance:
+
+   ```bash
+   kubectl get deployments,services,ingresses
+   ```
+
+   You should see the `Deployment`, `Service`, and `Ingress` created by the
+   Application instance.
+
+   ```bash
+   NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
+   deployment.apps/my-awesome-app   3/3     3            3           69s
+
+   NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
+   service/my-awesome-app-service   ClusterIP   10.100.167.72   <none>        80/TCP    65s
+
+   NAME                                               CLASS    HOSTS   ADDRESS   PORTS   AGE
+   ingress.networking.k8s.io/my-awesome-app-ingress   <none>   *                 80      62s
+   ```
+
+### Delete the Application instance
+
+kro can also help you clean up resources when you're done with them.
+
+1. **Delete the Application instance**: Clean up the resources by deleting the
+   Application instance:
+
+   ```bash
+   kubectl delete application my-application-instance
+   ```
+
+   Now, the resources created by the Application instance will be deleted.
diff --git a/website/versioned_docs/version-0.4.0/docs/getting-started/_category_.json b/website/versioned_docs/version-0.4.0/docs/getting-started/_category_.json
new file mode 100644
index 0000000..723093d
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/getting-started/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Getting started",
+  "position": 20,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.4.0/docs/overview.md b/website/versioned_docs/version-0.4.0/docs/overview.md
new file mode 100644
index 0000000..29daff7
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/overview.md
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Figure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for the Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Figure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Figure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.4.0/docs/overview.md.bak b/website/versioned_docs/version-0.4.0/docs/overview.md.bak
new file mode 100644
index 0000000..29daff7
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/docs/overview.md.bak
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Figure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for the Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Figure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Figure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.4.0/examples/aws/ack-eks-cluster.md b/website/versioned_docs/version-0.4.0/examples/aws/ack-eks-cluster.md
new file mode 100644
index 0000000..6de9c75
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/aws/ack-eks-cluster.md
@@ -0,0 +1,222 @@
+---
+sidebar_position: 302
+---
+
+# EKS Cluster
+
+```yaml title="eks.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscluster.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSCluster
+    spec:
+      name: string
+      version: string
+    status:
+      networkingInfo:
+        vpcID: ${clusterVPC.status.vpcID}
+        subnetAZA: ${clusterSubnetA.status.subnetID}
+        subnetAZB: ${clusterSubnetB.status.subnetID}
+      clusterARN: ${cluster.status.ackResourceMetadata.arn}
+  # resources
+  resources:
+    - id: clusterVPC
+      readyWhen:
+        - ${clusterVPC.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: kro-cluster-vpc
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSSupport: true
+          enableDNSHostnames: true
+    - id: clusterElasticIPAddress
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: ElasticIPAddress
+        metadata:
+          name: kro-cluster-eip
+        spec: {}
+    - id: clusterInternetGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: InternetGateway
+        metadata:
+          name: kro-cluster-igw
+        spec:
+          vpc: ${clusterVPC.status.vpcID}
+    - id: clusterRouteTable
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: RouteTable
+        metadata:
+          name: kro-cluster-public-route-table
+        spec:
+          vpcID: ${clusterVPC.status.vpcID}
+          routes:
+            - destinationCIDRBlock: 0.0.0.0/0
+              gatewayID: ${clusterInternetGateway.status.internetGatewayID}
+    - id: clusterSubnetA
+      readyWhen:
+        - ${clusterSubnetA.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet1
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterSubnetB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet2
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterNATGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: NATGateway
+        metadata:
+          name: kro-cluster-natgateway1
+        spec:
+          subnetID: ${clusterSubnetB.status.subnetID}
+          allocationID: ${clusterElasticIPAddress.status.allocationID}
+    - id: clusterRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-role
+        spec:
+          name: kro-cluster-role
+          description: "kro created cluster cluster role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "eks.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterNodeRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-node-role
+        spec:
+          name: kro-cluster-node-role
+          description: "kro created cluster node role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
+            - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
+            - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "ec2.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterAdminRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-pia-role
+        spec:
+          name: kro-cluster-pia-role
+          description: "kro created cluster admin pia role"
+          policies:
+            - arn:aws:iam::aws:policy/AdministratorAccess
+          assumeRolePolicyDocument: |
+            {
+                "Version": "2012-10-17",
+                "Statement": [
+                    {
+                        "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
+                        "Effect": "Allow",
+                        "Principal": {
+                            "Service": "pods.eks.amazonaws.com"
+                        },
+                        "Action": [
+                            "sts:AssumeRole",
+                            "sts:TagSession"
+                        ]
+                    }
+                ]
+            }
+    - id: cluster
+      readyWhen:
+        - ${cluster.status.status == "ACTIVE"}
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Cluster
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          name: ${schema.spec.name}
+          accessConfig:
+            authenticationMode: API_AND_CONFIG_MAP
+          roleARN: ${clusterRole.status.ackResourceMetadata.arn}
+          version: ${schema.spec.version}
+          resourcesVPCConfig:
+            endpointPrivateAccess: false
+            endpointPublicAccess: true
+            subnetIDs:
+              - ${clusterSubnetA.status.subnetID}
+              - ${clusterSubnetB.status.subnetID}
+    - id: clusterNodeGroup
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Nodegroup
+        metadata:
+          name: kro-cluster-nodegroup
+        spec:
+          name: kro-cluster-ng
+          diskSize: 100
+          clusterName: ${cluster.spec.name}
+          subnets:
+            - ${clusterSubnetA.status.subnetID}
+            - ${clusterSubnetB.status.subnetID}
+          nodeRole: ${clusterNodeRole.status.ackResourceMetadata.arn}
+          updateConfig:
+            maxUnavailable: 1
+          scalingConfig:
+            minSize: 1
+            maxSize: 1
+            desiredSize: 1
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/aws/ack-networking-stack.md b/website/versioned_docs/version-0.4.0/examples/aws/ack-networking-stack.md
new file mode 100644
index 0000000..f388171
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/aws/ack-networking-stack.md
@@ -0,0 +1,79 @@
+---
+sidebar_position: 303
+---
+
+# Networking Stack
+
+```yaml title="networking-stack.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: networkingstack.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: NetworkingStack
+    spec:
+      name: string
+    status:
+      networkingInfo:
+        vpcID: ${vpc.status.vpcID}
+        subnetAZA: ${subnetAZA.status.subnetID}
+        subnetAZB: ${subnetAZB.status.subnetID}
+        subnetAZC: ${subnetAZC.status.subnetID}
+        securityGroup: ${securityGroup.status.id}
+  # resources
+  resources:
+    - id: vpc
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: vpc-${schema.spec.name}
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSHostnames: false
+          enableDNSSupport: true
+    - id: subnetAZA
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-a-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-b-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZC
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-c-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2c
+          cidrBlock: 192.168.128.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: securityGroup
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: cluster-security-group-${schema.spec.name}
+        spec:
+          vpcID: ${vpc.status.vpcID}
+          name: my-sg-${schema.spec.name}
+          description: something something
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/aws/ack-valkey-cachecluster.md b/website/versioned_docs/version-0.4.0/examples/aws/ack-valkey-cachecluster.md
new file mode 100644
index 0000000..46c0b53
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/aws/ack-valkey-cachecluster.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 304
+---
+
+# Valkey cluster
+
+```yaml title="valkey-cachecluster.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: valkey.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: Valkey
+    spec:
+      name: string
+    status:
+      csgARN: ${cacheSubnetGroup.status.ackResourceMetadata.arn}
+      subnets: ${cacheSubnetGroup.status.subnets}
+      clusterARN: ${valkey.status.ackResourceMetadata.arn}
+  resources:
+    - id: networkingStack
+      template:
+        apiVersion: kro.run/v1alpha1
+        kind: NetworkingStack
+        metadata:
+          name: ${schema.spec.name}-networking-stack
+        spec:
+          name: ${schema.spec.name}-networking-stack
+    - id: cacheSubnetGroup
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheSubnetGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-subnet-group
+        spec:
+          cacheSubnetGroupDescription: "Valkey ElastiCache subnet group"
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          subnetIDs:
+            - ${networkingStack.status.networkingInfo.subnetAZA}
+            - ${networkingStack.status.networkingInfo.subnetAZB}
+            - ${networkingStack.status.networkingInfo.subnetAZC}
+    - id: sg
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-sg
+        spec:
+          name: ${schema.spec.name}-valkey-sg
+          description: "Valkey ElastiCache security group"
+          vpcID: ${networkingStack.status.networkingInfo.vpcID}
+          ingressRules:
+            - fromPort: 6379
+              toPort: 6379
+              ipProtocol: tcp
+              ipRanges:
+                - cidrIP: 0.0.0.0/0
+    - id: valkey
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheCluster
+        metadata:
+          name: ${schema.spec.name}-valkey
+        spec:
+          cacheClusterID: vote-valkey-cluster
+          cacheNodeType: cache.t3.micro
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          engine: valkey
+          engineVersion: "8.x"
+          numCacheNodes: 1
+          port: 6379
+          securityGroupIDs:
+            - ${sg.status.id}
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/aws/aws-examples.md b/website/versioned_docs/version-0.4.0/examples/aws/aws-examples.md
new file mode 100644
index 0000000..71c1709
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/aws/aws-examples.md
@@ -0,0 +1,28 @@
+---
+sidebar_position: 301
+---
+
+:::info[**ACK controllers Dependency**]
+Most examples below will need ACK controllers to be running in the cluster either through kro or other means.
+:::
+
+# AWS Examples
+- [Deploying a Controller](./deploying-controller.md) Discover how to deploy a
+  Kubernetes controller using kro ResourceGraphDefinitions, including the necessary
+  Deployment, ServiceAccount, and CRDs.
+
+- [AWS Networking Stack](./ack-networking-stack.md) Learn how to define and
+  manage an AWS networking stack using kro ResourceGraphDefinitions, including VPCs,
+  subnets, and security groups.
+
+- [EKS Cluster with ACK CRDs](./ack-eks-cluster.md) Explore how to define and
+  manage an EKS cluster using AWS Controllers for Kubernetes (ACK) CRDs within a
+  kro ResourceGraphDefinition.
+
+- [Valkey CacheCluster with ACK CRDs](./ack-valkey-cachecluster.md) Learn how to
+  create and configure a Valkey CacheCluster using ACK CRDs in a kro
+  ResourceGraphDefinition.
+
+- [Pod and RDS DBInstance](./pod-rds-dbinstance.md) Deploy a Pod and an RDS
+  DBInstance in a kro ResourceGraphDefinition, showcasing the use of multiple resources
+  with dependencies.
diff --git a/website/versioned_docs/version-0.4.0/examples/aws/category.json b/website/versioned_docs/version-0.4.0/examples/aws/category.json
new file mode 100644
index 0000000..ce984a9
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/aws/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "AWS Examples",
+  "position": 300,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with AWS"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
diff --git a/website/versioned_docs/version-0.4.0/examples/aws/deploying-controller.md b/website/versioned_docs/version-0.4.0/examples/aws/deploying-controller.md
new file mode 100644
index 0000000..ddb999b
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/aws/deploying-controller.md
@@ -0,0 +1,297 @@
+---
+sidebar_position: 305
+---
+
+# Controller Deployment
+
+```yaml title="controller-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscontrollers.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSController
+    spec:
+      name: string | default=eks-controller
+      namespace: string | default=default
+      values:
+        aws:
+          accountID: string | required=true
+          region: string | default=us-west-2
+        deployment:
+          containerPort: integer | default=8080
+          replicas: integer | default=1
+        iamRole:
+          maxSessionDuration: integer | default=3600
+          oidcProvider: string | required=true
+          roleDescription: string | default=IRSA role for ACK EKS controller deployment on EKS cluster using kro Resource group
+        iamPolicy:
+          # would prefer to add a policyDocument here, need to support multiline string here
+          description: string | default="policy for eks controller"
+        image:
+          deletePolicy: string | default=delete
+          repository: string | default=public.ecr.aws/aws-controllers-k8s/eks-controller
+          tag: string | default=1.4.7
+          resources:
+            requests:
+              memory: string | default=64Mi
+              cpu: string | default=50m
+            limits:
+              memory: string | default=128Mi
+              cpu: string | default=100m
+        log:
+          enabled: boolean | default=false
+          level: string | default=info
+        serviceAccount:
+          name: string | default=eks-controller-sa
+  resources:
+  - id: eksCRDGroup
+    template:
+      apiVersion: kro.run/v1alpha1
+      kind: EKSCRDGroup
+      metadata:
+        name: ${schema.spec.name}-crd-group
+      spec:
+        name: ${schema.spec.name}-crd-group
+  - id: eksControllerIamPolicy
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Policy
+      metadata:
+        name: ${schema.spec.name}-iam-policy
+      spec:
+        name: ${schema.spec.name}-iam-policy
+        description: ${schema.spec.values.iamPolicy.description}
+        policyDocument: >
+          {
+            "Version": "2012-10-17",
+            "Statement": [
+              {
+                "Sid": "VisualEditor0",
+                "Effect": "Allow",
+                "Action": [
+                  "eks:*",
+                  "iam:GetRole",
+                  "iam:PassRole",
+                  "iam:ListAttachedRolePolicies",
+                  "ec2:DescribeSubnets"
+                ],
+                "Resource": "*"
+              }
+            ]
+          }
+  - id: eksControllerIamRole
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Role
+      metadata:
+        name: ${schema.spec.name}-iam-role
+        namespace: ${schema.spec.namespace}
+      spec:
+        name: ${schema.spec.name}-iam-role
+        description: ${schema.spec.values.iamRole.roleDescription}
+        maxSessionDuration: ${schema.spec.values.iamRole.maxSessionDuration}
+        policies:
+        - ${eksControllerIamPolicy.status.ackResourceMetadata.arn}
+        assumeRolePolicyDocument: >
+          {
+            "Version":"2012-10-17",
+            "Statement": [{
+              "Effect":"Allow",
+              "Principal": {"Federated": "arn:aws:iam::${schema.spec.values.aws.accountID}:oidc-provider/${schema.spec.values.iamRole.oidcProvider}"},
+              "Action": ["sts:AssumeRoleWithWebIdentity"],
+              "Condition": {
+                "StringEquals": {"${schema.spec.values.iamRole.oidcProvider}:sub": "system:serviceaccount:${schema.spec.namespace}:${schema.spec.values.serviceAccount.name}"}
+              }
+            }]
+          }
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.values.serviceAccount.name}
+        namespace: ${schema.spec.namespace}
+        annotations:
+          eks.amazonaws.com/role-arn : ${eksControllerIamRole.status.ackResourceMetadata.arn}
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        name: ${schema.spec.name}-deployment
+        namespace: ${schema.spec.namespace}
+        labels:
+          app.kubernetes.io.name: ${schema.spec.name}-deployment
+          app.kubernetes.io.instance: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels:
+            app.kubernetes.io.name: ${schema.spec.name}-deployment
+            app.kubernetes.io.instance: ${schema.spec.name}
+        template:
+          metadata:
+            labels:
+              app.kubernetes.io.name: ${schema.spec.name}-deployment
+              app.kubernetes.io.instance: ${schema.spec.name}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - command:
+              - ./bin/controller
+              args:
+              - --aws-region
+              - ${schema.spec.values.aws.region}
+              - --enable-development-logging=${schema.spec.values.log.enabled}
+              - --log-level
+              - ${schema.spec.values.log.level}
+              - --deletion-policy
+              - ${schema.spec.values.image.deletePolicy}
+              - --watch-namespace
+              - ${schema.spec.namespace}
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              name: controller
+              ports:
+                - name: http
+                  containerPort: ${schema.spec.values.deployment.containerPort}
+              resources:
+                requests:
+                  memory: ${schema.spec.values.image.resources.requests.memory}
+                  cpu: ${schema.spec.values.image.resources.requests.cpu}
+                limits:
+                    memory: ${schema.spec.values.image.resources.limits.memory}
+                    cpu: ${schema.spec.values.image.resources.limits.cpu}
+              env:
+              - name: ACK_SYSTEM_NAMESPACE
+                value: ${schema.spec.namespace}
+              - name: AWS_REGION
+                value: ${schema.spec.values.aws.region}
+              - name: DELETE_POLICY
+                value: ${schema.spec.values.image.deletePolicy}
+              - name: ACK_LOG_LEVEL
+                value: ${schema.spec.values.log.level}
+              ports:
+              - containerPort: 80
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}-clusterrolebinding
+      roleRef:
+        kind: ClusterRole
+        apiGroup: rbac.authorization.k8s.io
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}-clusterrole
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - configmaps
+        - secrets
+        verbs:
+        - get
+        - list
+        - patch
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - namespaces
+        verbs:
+        - get
+        - list
+        - watch
+      - apiGroups:
+        - ec2.services.k8s.aws
+        resources:
+        - securitygroups
+        - securitygroups/status
+        - subnets
+        - subnets/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries
+        - addons
+        - clusters
+        - fargateprofiles
+        - identityproviderconfigs
+        - nodegroups
+        - podidentityassociations
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries/status
+        - addons/status
+        - clusters/status
+        - fargateprofiles/status
+        - identityproviderconfigs/status
+        - nodegroups/status
+        - podidentityassociations/status
+        verbs:
+        - get
+        - patch
+        - update
+      - apiGroups:
+        - iam.services.k8s.aws
+        resources:
+        - roles
+        - roles/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - kms.services.k8s.aws
+        resources:
+        - keys
+        - keys/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources
+        - fieldexports
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources/status
+        - fieldexports/status
+        verbs:
+        - get
+        - patch
+        - update
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/aws/pod-rds-dbinstance.md b/website/versioned_docs/version-0.4.0/examples/aws/pod-rds-dbinstance.md
new file mode 100644
index 0000000..3b06711
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/aws/pod-rds-dbinstance.md
@@ -0,0 +1,50 @@
+---
+sidebar_position: 306
+---
+
+# Pod with RDS DBInstance
+
+```yaml title="deploymentdbinstance-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentandawspostgres
+spec:
+  # CRD Definition
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentAndAWSPostgres
+    spec:
+      applicationName: string
+      image: string
+      location: string
+
+  # Resources
+  resources:
+    - id: dbinstance
+      template:
+        apiVersion: rds.services.k8s.aws/v1alpha1
+        kind: DBInstance
+        metadata:
+          name: ${schema.spec.applicationName}-dbinstance
+        spec:
+          # need to specify the required fields (e.g masterUsername, masterPassword)
+          engine: postgres
+          dbInstanceIdentifier: ${schema.spec.applicationName}-dbinstance
+          allocatedStorage: 20
+          dbInstanceClass: db.t3.micro
+
+    - id: pod
+      template:
+        apiVersion: v1
+        kind: Pod
+        metadata:
+          name: ${schema.spec.applicationName}-pod
+        spec:
+          containers:
+            - name: container1
+              image: ${schema.spec.image}
+              env:
+                - name: POSTGRESS_ENDPOINT
+                  value: ${dbinstance.status.endpoint.address}
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/azure/category.json b/website/versioned_docs/version-0.4.0/examples/azure/category.json
new file mode 100644
index 0000000..2298240
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/azure/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Azure Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Microsoft Azure"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.4.0/examples/basic/category.json b/website/versioned_docs/version-0.4.0/examples/basic/category.json
new file mode 100644
index 0000000..0216728
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/basic/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Basic Examples",
+  "position": 100,
+  "link": {
+    "type": "generated-index",
+    "description": "Basic examples to get started with Kro"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.4.0/examples/basic/noop.md b/website/versioned_docs/version-0.4.0/examples/basic/noop.md
new file mode 100644
index 0000000..3258bcb
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/basic/noop.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 101
+---
+
+# Empty ResourceGraphDefinition
+
+```yaml title="noop.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: noop
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: NoOp
+    spec:
+      name: string | required=true
+  resources: []
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/basic/web-app-ingress.md b/website/versioned_docs/version-0.4.0/examples/basic/web-app-ingress.md
new file mode 100644
index 0000000..2767fca
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/basic/web-app-ingress.md
@@ -0,0 +1,92 @@
+---
+sidebar_position: 102
+---
+
+# Web Application w/ Ingress
+
+```yaml title="webapp-ingress.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/basic/web-app.md b/website/versioned_docs/version-0.4.0/examples/basic/web-app.md
new file mode 100644
index 0000000..6619310
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/basic/web-app.md
@@ -0,0 +1,53 @@
+---
+sidebar_position: 103
+---
+
+# Web Application
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentservice
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentService
+    spec:
+      name: string
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-deployment
+                  image: nginx
+                  ports:
+                    - containerPort: 80
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          selector:
+            app: deployment
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+```
diff --git a/website/versioned_docs/version-0.4.0/examples/examples.md b/website/versioned_docs/version-0.4.0/examples/examples.md
new file mode 100644
index 0000000..e1dcadc
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/examples.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 0
+---
+
+# Examples
+
+This section provides a collection of examples demonstrating how to define and
+use ResourceGraphDefinitions in **kro** for various scenarios. Each example showcases a
+specific use case and includes a detailed explanation along with the
+corresponding YAML definitions.
+
+## Basic Examples
+
+- [Empty ResourceGraphDefinition (Noop)](./basic/noop.md) Explore the simplest form of a
+  ResourceGraphDefinition that doesn't define any resources, serving as a reference for
+  the basic structure.
+
+- [Simple Web Application](./basic/web-app.md) Deploy a basic web application with a
+  Deployment and Service.
+
+- [Web Application with Ingress](./basic/web-app-ingress.md) Extend the basic web
+  application example to include an optional Ingress resource for external
+  access.
+
+## Advanced Examples
+
+- [Deploying CoreDNS](./kubernetes/deploying-coredns.md) Learn how to deploy CoreDNS in a
+  Kubernetes cluster using kro ResourceGraphDefinitions, including the necessary
+  Deployment, Service, and ConfigMap.
diff --git a/website/versioned_docs/version-0.4.0/examples/gcp/category.json b/website/versioned_docs/version-0.4.0/examples/gcp/category.json
new file mode 100644
index 0000000..4277df4
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/gcp/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "GCP Examples",
+  "position": 400,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Google Cloud Platform"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.4.0/examples/gcp/cloud-sql.md b/website/versioned_docs/version-0.4.0/examples/gcp/cloud-sql.md
new file mode 100644
index 0000000..c3eb689
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/gcp/cloud-sql.md
@@ -0,0 +1,274 @@
+---
+sidebar_position: 406
+---
+
+# CloudSQL
+
+This example show how you can use KRO to deploy GCP Cloud SQL instance in 2 regions as a primary and replica instances.
+
+
+## End User: CloudSQL
+The administrator needs to install the RGD first.
+The end user creates a `CloudSQL` resource that looks like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: CloudSQL
+metadata:
+  name: demo
+  namespace: config-connector
+spec:
+  name: demo
+  project: my-gcp-project
+  primaryRegion: us-central1
+  replicaRegion: us-west1
+```
+
+The status of the applied resource can be checked using:
+
+```
+kubectl get cloudsqls
+kubectl get cloudsql demo -n config-connector -o yaml
+```
+
+Navigate to CloudSQL page in the GCP Console and verify the creation of primary and replica instances.
+
+Once done, the user can delete the `CloudSQL` instance:
+
+```
+kubectl delete cloudsql demo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+> kubectl get rgd cloudsql.kro.run
+NAME               APIVERSION   KIND       STATE    AGE
+cloudsql.kro.run   v1alpha1     CloudSQL   Active   44m
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: cloudsql.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CloudSQL
+    spec:
+      name: string
+      project: string
+      primaryRegion: string
+      replicaRegion: string
+    status:
+      connectionName: ${sqlPrimary.status.connectionName}
+      ipAddress: ${sqlPrimary.status.firstIpAddress}
+  resources:
+  - id: cloudkmsEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: cloudkms-enablement
+      spec:
+        resourceID: cloudkms.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: serviceUsageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: serviceusage-enablement
+      spec:
+        resourceID: serviceusage.googleapis.com
+  - id: sqlAdminEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: sqladmin-enablement
+      spec:
+        resourceID: sqladmin.googleapis.com
+  - id: serviceidentity
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: ServiceIdentity
+      metadata:
+        labels:
+          enabled-service: ${serviceUsageEnable.metadata.name}
+        name: sqladmin.googleapis.com
+      spec:
+        projectRef:
+          external: ${schema.spec.project}
+  - id: keyringPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        location: ${schema.spec.primaryRegion}
+  - id: keyringReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        location: ${schema.spec.replicaRegion}
+  - id: kmskeyPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.primaryRegion}
+        name: ${schema.spec.name}-primary
+      spec:
+        keyRingRef:
+          name: ${keyringPrimary.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: kmskeyReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.replicaRegion}
+        name: ${schema.spec.name}-replica
+      spec:
+        keyRingRef:
+          name: ${keyringReplica.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: iampolicymemberPrimary
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: sql-kms-${schema.spec.primaryRegion}-policybinding
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyPrimary.metadata.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: iampolicymemberReplica
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        name: sql-kms-${schema.spec.replicaRegion}-policybinding
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyReplica.metadata.name}-replica
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: sqlPrimary
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.primaryRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.primaryRegion}/keyRings/${keyringPrimary.metadata.name}/cryptoKeys/${kmskeyPrimary.metadata.name}
+        region: ${schema.spec.primaryRegion}
+        settings:
+          availabilityType: REGIONAL
+          backupConfiguration:
+            backupRetentionSettings:
+              retainedBackups: 6
+            enabled: true
+            location: us
+          diskSize: 50
+          diskType: PD_SSD
+          maintenanceWindow:
+            day: 7
+            hour: 3
+          tier: db-custom-8-30720
+  - id: sqlReplica
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.replicaRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.replicaRegion}/keyRings/${keyringReplica.metadata.name}/cryptoKeys/${kmskeyReplica.metadata.name}
+        masterInstanceRef:
+          name: ${schema.spec.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        region: ${schema.spec.replicaRegion}
+        settings:
+          availabilityType: REGIONAL
+          diskSize: 50
+          diskType: PD_SSD
+          tier: db-custom-8-30720
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.4.0/examples/gcp/eventarc.md b/website/versioned_docs/version-0.4.0/examples/gcp/eventarc.md
new file mode 100644
index 0000000..5ff9517
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/gcp/eventarc.md
@@ -0,0 +1,273 @@
+---
+sidebar_position: 407
+---
+
+# GCSBucketWithFinalizerTrigger
+
+A **Platform Administrator** wants to give end users in their organization self-service access to creating GCS Buckets that triggers a Cloud Workflow when any object in it is finalized. The platform administrator creates a kro ResourceGraphDefinition called *gcsbucketwithfinalizertrigger.kro.run* that defines the required Kubernetes resources and a CRD called *GCSBucketWithFinalizertrigger* that exposes only the options they want to be configurable by end users.
+
+The following KCC objects are created by this RGD:
+* IAMServiceAccount, IAMPolicyMember: Service Account with necessary permissions for Eventarc and Pub/Sub.
+* StorageBucket
+* PubSubTopic
+* EventArcTrigger
+* StorageNotification: To publish events from the GCS bucket to a Pub/Sub topic.
+
+Pre-requisites:
+* Workflow: The workflow to be triggered on Finalizer event.
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GCS EventArc Stack](gcsbucket-with-finalizer-trigger.png)
+
+<!--
+meta {
+  title "GCS Bucket Finalizer Event Processing"
+}
+
+elements {
+  gcp {
+      card iam {
+         name "EventArc, Workflow"
+      }
+      group  storageA {
+        name ""
+        card gcs {
+        name "bucket"
+        }
+        card pubsub {
+        name "finalizer topic"
+        }
+        card eventarc {
+        name "trigger"
+        }
+        card workflows {
+        name "finalizer workflow"
+        }
+      }
+  }
+}
+
+paths {
+  gcs \-\-> pubsub
+  pubsub \-\-> eventarc
+  eventarc \-\-> workflows
+}
+-->
+
+
+
+## End User: GCSBucketWithFinalizerTrigger
+
+The administrator needs to install the RGD first.
+The end user creates a `GCSBucketWithFinalizerTrigger` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GCSBucketWithFinalizerTrigger
+metadata:
+  name: gcsevent-test
+  namespace: config-connector
+spec:
+  name: demo-gcs               # used as name or prefix for KCC objects
+  workflowName: gcs-finalizer-workflow   # Replace with your workflow path
+  location: us-central1        # desired location
+  project: my-project-name     # Replace with your project name
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gcsbucketwithfinalizertrigger -n config-connector
+kubectl get gcsbucketwithfinalizertrigger gcsevent-test -n config-connector -o yaml
+```
+
+Navigate to GCS page in the GCP Console and verify the bucket creation. Also verify that the Triggers are setup correctly in the EventArc page.
+
+Once done, the user can delete the `GCSBucketWithFinalizerTrigger` instance:
+
+```
+kubectl delete gcsbucketwithfinalizertrigger gcsevent-test -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gcsbucketwithfinalizertrigger.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gcsbucketwithfinalizertrigger.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GCSBucketWithFinalizerTrigger
+    spec:
+      name: string
+      workflowName: string
+      location: string
+      project: string
+    status:
+      url: ${bucket.status.url}
+  resources:
+  - id: storageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: storage-enablement
+      spec:
+        resourceID: storage.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: pubsubEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: pubsub-enablement
+      spec:
+        resourceID: pubsub.googleapis.com
+  - id: eventarcEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: eventarc-enablement
+      spec:
+        resourceID: eventarc.googleapis.com
+  - id: iamsa
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMServiceAccount
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        #annotations:
+        #  cnrm.cloud.google.com/project-id: ${schema.spec.project}
+        name: ${schema.spec.name}
+      spec:
+        displayName: ${schema.spec.name}-eventarc-workflow
+  - id: iampmEventarc
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-eventarc
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/eventarc.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: iampmWorkflow
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-workflow
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/workflows.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          enabled-service: ${pubsubEnable.metadata.name}
+        name: ${schema.spec.name}-gcs-finalizer-topic
+  - id: bucket
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageBucket
+      metadata:
+        labels:
+          enabled-service: ${storageEnable.metadata.name}
+        name: ${schema.spec.name}-${schema.spec.project}
+      spec:
+        uniformBucketLevelAccess: true
+  - id: eventTrigger
+    template:
+      apiVersion: eventarc.cnrm.cloud.google.com/v1beta1
+      kind: EventarcTrigger
+      metadata:
+        labels:
+          enabled-service: ${eventarcEnable.metadata.name}
+        name: ${schema.spec.name}-gcsfinalizer
+      spec:
+        destination:
+          workflowRef:
+            external: "projects/${schema.spec.project}/locations/${schema.spec.location}/workflows/${schema.spec.workflowName}"
+        location: ${schema.spec.location}
+        serviceAccountRef:
+          name: ${iamsa.metadata.name}
+        transport:
+          pubsub:
+            topicRef:
+              name: ${topic.metadata.name}
+              namespace: config-connector
+        matchingCriteria:
+        - attribute: "type"
+          value: "google.cloud.pubsub.topic.v1.messagePublished"
+        projectRef:
+          external: "projects/${schema.spec.project}"
+  - id: storageNotification
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageNotification
+      metadata:
+        name: ${schema.spec.name}-gcs
+      spec:
+        bucketRef:
+          name: ${bucket.metadata.name}
+        topicRef:
+          name: ${topic.metadata.name}
+        eventTypes:
+        - "OBJECT_FINALIZE"
+        payloadFormat: JSON_API_V1
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.4.0/examples/gcp/gcsbucket-with-finalizer-trigger.png b/website/versioned_docs/version-0.4.0/examples/gcp/gcsbucket-with-finalizer-trigger.png
new file mode 100644
index 0000000..8bfdd20
Binary files /dev/null and b/website/versioned_docs/version-0.4.0/examples/gcp/gcsbucket-with-finalizer-trigger.png differ
diff --git a/website/versioned_docs/version-0.4.0/examples/gcp/gke-cluster.md b/website/versioned_docs/version-0.4.0/examples/gcp/gke-cluster.md
new file mode 100644
index 0000000..6b4cbd3
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/gcp/gke-cluster.md
@@ -0,0 +1,233 @@
+---
+sidebar_position: 405
+---
+
+# GKECluster
+
+A **Platform Administrator** wants to give end users in their organization self-service access to create GKE clusters. The platform administrator creates a kro ResourceGraphDefinition called *gkecluster.kro.run* that defines the required Kubernetes resources and a CRD called *GKEcluster* that exposes only the options they want to be configurable by end users. The ResourceGraphDefinition would define the following resources (using [KCC](https://github.com/GoogleCloudPlatform/k8s-config-connector) to provide the mappings from K8s CRDs to Google Cloud APIs):
+
+* GKE cluster
+* Container Node Pool
+* Network
+* Subnetwork
+* KMSKeyRing   - Encrypt BootDisk
+* KMSCryptoKey - Encrypt BootDisk
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GKE Cluster Stack](gke-cluster.png)
+
+## End User: GKECluster
+
+The administrator needs to install the RGD first.
+The end user creates a `GKECluster` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GKECluster
+metadata:
+  name: krodemo
+  namespace: config-connector
+spec:
+  name: krodemo         # Name used for all resources created as part of this RGD
+  location: us-central1 # Region where the GCP resources are created
+  maxnodes: 4           # Max scaling limit for the nodes in the new nodepool
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gkeclusters
+kubectl get gkeclusters krodemo -n config-connector -o yaml
+```
+
+Navigate to GKE Cluster page in the GCP Console and verify the cluster creation.
+
+Once done, the user can delete the `GKECluster` instance:
+
+```
+kubectl delete gkecluster krodemo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gkecluster.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gkecluster.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GKECluster
+    spec:
+      name: string
+      nodepool: string
+      maxnodes: integer
+      location: string
+    status:
+      masterVersion: ${cluster.status.masterVersion}
+  resources:
+  - id: network
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeNetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${schema.spec.name}
+      spec:
+        #routingMode: GLOBAL
+        #deleteDefaultRoutesOnCreate: false
+        routingMode: REGIONAL
+        autoCreateSubnetworks: false
+  - id: subnet
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeSubnetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${network.metadata.name}
+      spec:
+        ipCidrRange: 10.2.0.0/16
+        #ipCidrRange: 10.10.90.0/24
+        region: ${schema.spec.location}
+        networkRef:
+          name: ${schema.spec.name}
+        #privateIpGoogleAccess: true
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${subnet.metadata.name}
+  - id: keyring
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${topic.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+  - id: key
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${keyring.metadata.name}
+      spec:
+        keyRingRef:
+          name: ${schema.spec.name}
+        purpose: ASYMMETRIC_SIGN
+        versionTemplate:
+          algorithm: EC_SIGN_P384_SHA384
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: nodepool
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerNodePool
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${cluster.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        autoscaling:
+          minNodeCount: 1
+          maxNodeCount: ${schema.spec.maxnodes}
+        nodeConfig:
+          machineType: n1-standard-1
+          diskSizeGb: 100
+          diskType: pd-standard
+          #taint:
+          #- effect: NO_SCHEDULE
+          #  key: originalKey
+          #  value: originalValue
+        clusterRef:
+          name: ${schema.spec.name}
+  - id: cluster
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerCluster
+      metadata:
+        #annotations:
+        #  cnrm.cloud.google.com/remove-default-node-pool: "false"
+        labels:
+          source: "gkecluster"
+        name: ${key.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        initialNodeCount: 1
+        networkRef:
+          name: ${schema.spec.name}
+        subnetworkRef:
+          name: ${schema.spec.name}
+        ipAllocationPolicy:
+          clusterIpv4CidrBlock: /20
+          servicesIpv4CidrBlock: /20
+        #masterAuth:
+        #  clientCertificateConfig:
+        #    issueClientCertificate: false
+        #workloadIdentityConfig:
+        #  # Workload Identity supports only a single namespace based on your project name.
+        #  # Replace ${PROJECT_ID?} below with your project ID.
+        #  workloadPool: ${PROJECT_ID?}.svc.id.goog      
+        notificationConfig:
+          pubsub:
+            enabled: true
+            topicRef:
+              name: ${schema.spec.name}
+        loggingConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "WORKLOADS"
+        monitoringConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "APISERVER"
+          managedPrometheus:
+            enabled: true
+        clusterAutoscaling:
+          enabled: true
+          autoscalingProfile: BALANCED
+          resourceLimits:
+            - resourceType: cpu
+              maximum: 100
+              minimum: 10
+            - resourceType: memory
+              maximum: 1000
+              minimum: 100
+          autoProvisioningDefaults:
+            bootDiskKMSKeyRef:
+              name: ${schema.spec.name}
+        nodeConfig:
+          linuxNodeConfig:
+            sysctls:
+              net.core.somaxconn: "4096"
+            cgroupMode: "CGROUP_MODE_UNSPECIFIED"
+      
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.4.0/examples/gcp/gke-cluster.png b/website/versioned_docs/version-0.4.0/examples/gcp/gke-cluster.png
new file mode 100644
index 0000000..37eaf08
Binary files /dev/null and b/website/versioned_docs/version-0.4.0/examples/gcp/gke-cluster.png differ
diff --git a/website/versioned_docs/version-0.4.0/examples/kubernetes/category.json b/website/versioned_docs/version-0.4.0/examples/kubernetes/category.json
new file mode 100644
index 0000000..d17bd0a
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/kubernetes/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Kubernetes Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Kubernetes"
+  },
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/website/versioned_docs/version-0.4.0/examples/kubernetes/deploying-coredns.md b/website/versioned_docs/version-0.4.0/examples/kubernetes/deploying-coredns.md
new file mode 100644
index 0000000..d10d654
--- /dev/null
+++ b/website/versioned_docs/version-0.4.0/examples/kubernetes/deploying-coredns.md
@@ -0,0 +1,189 @@
+---
+sidebar_position: 10
+---
+
+# CoreDNS Deployment
+
+```yaml title="coredns-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: coredns.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CoreDNSDeployment
+    spec:
+      name: string | default=mycoredns
+      namespace: string | default=default
+      values:
+        clusterRole:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/bootstrapping": "rbac-defaults"}'
+        clusterRoleBinding:
+          annotations: 'map[string]string | default={"rbac.authorization.kubernetes.io/autoupdate": "\"true\""}'
+        configMap:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns"}'
+        deployment:
+          annotations: 'map[string]string | default={"deployment.kubernetes.io/revision": "\"1\""}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/name": "CoreDNS"}'
+          replicas: integer | default=2
+        image:
+          repository: string | default=coredns/coredns
+          tag: string | default=1.11.3
+        resources:
+          limits:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+          requests:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+        service:
+          annotations: 'map[string]string | default={"prometheus.io/port": "9153", "prometheus.io/scrape": "true"}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "kube-dns", "k8s-app": "kube-dns", "kubernetes.io/cluster-service": "true", "kubernetes.io/name": "CoreDNS"}'
+          clusterIP: string | default=10.100.123.45
+          clusterIPs: '[]string | default=["10.100.123.45"]'
+          ipFamilies: '[]string | default=["IPv4"]'
+          type: string | default=ClusterIP
+        serviceAccount:
+          secrets: 'map[string]string | default={"name": "coredns-token-pvcnf"}'
+  resources:
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - endpoints
+        - services
+        - pods
+        - namespaces
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - discovery.k8s.io
+        resources:
+        - endpointslices
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - nodes
+        verbs:
+        - get
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+        annotations: ${schema.spec.values.clusterRoleBinding.annotations}
+      roleRef:
+        apiGroup: rbac.authorization.k8s.io
+        kind: ClusterRole
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: configMap
+    template:
+      apiVersion: v1
+      kind: ConfigMap
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.configMap.labels}
+      data:
+        Corefile: |-
+          .:53 {
+              errors
+              health
+              kubernetes cluster.local in-addr.arpa ip6.arpa {
+                pods insecure
+                fallthrough in-addr.arpa ip6.arpa
+              }
+              prometheus :9153
+              forward . /etc/resolv.conf
+              cache 30
+              loop
+              reload
+              loadbalance
+          }
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        annotations: ${schema.spec.values.deployment.annotations}
+        labels: ${schema.spec.values.deployment.labels}
+        name: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels: ${schema.spec.values.configMap.labels}
+        template:
+          metadata:
+            labels: ${schema.spec.values.configMap.labels}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - name: "coredns"
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              args: ["-conf", "/etc/coredns/Corefile"]
+              resources: ${schema.spec.values.resources}
+              volumeMounts:
+              - name: config-volume
+                mountPath: /etc/coredns
+            volumes:
+              - name: config-volume
+                configMap:
+                  name: ${schema.spec.name}
+                  items:
+                  - key: Corefile
+                    path: Corefile
+  - id: service
+    template:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.service.labels}
+        annotations: ${schema.spec.values.service.annotations}
+      spec:
+        selector:
+          k8s-app: kube-dns
+        clusterIP: ${schema.spec.values.service.clusterIP}
+        clusterIPs: ${schema.spec.values.service.clusterIPs}
+        internalTrafficPolicy: Cluster
+        ipFamilies: ${schema.spec.values.service.ipFamilies}
+        ports:
+        - name: dns
+          port: 53
+          protocol: UDP
+          targetPort: 53
+        - name: dns-tcp
+          port: 53
+          protocol: TCP
+          targetPort: 53
+        selector:
+         k8s-app: kube-dns
+        sessionAffinity: None
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.name}
+        namespace: ${schema.spec.namespace}
+        labels: ${schema.spec.values.configMap.labels}
+      secrets:
+      - ${schema.spec.values.serviceAccount.secrets}
+```
diff --git a/website/versioned_docs/version-0.4.1/docs/concepts/00-resource-group-definitions.md b/website/versioned_docs/version-0.4.1/docs/concepts/00-resource-group-definitions.md
new file mode 100644
index 0000000..372d7c1
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/concepts/00-resource-group-definitions.md
@@ -0,0 +1,316 @@
+---
+sidebar_position: 1
+---
+
+# ResourceGraphDefinitions
+
+ResourceGraphDefinitions are the fundamental building blocks in **kro**. They provide a
+way to define, organize, and manage sets of related Kubernetes resources as a
+single, reusable unit.
+
+## What is a ResourceGraphDefinition?
+
+A **ResourceGraphDefinition** is a custom resource that lets you create new Kubernetes
+APIs for deploying multiple resources together. It acts as a blueprint,
+defining:
+
+- What users can configure (schema)
+- What resources to create (resources)
+- How resources reference each other (dependencies)
+- When resources should be included (conditions)
+- What status to expose (status)
+
+When you create a **ResourceGraphDefinition**, kro generates a new API (a.k.a Custom
+Resource Definition) in your cluster that others can use to deploy resources in a
+consistent, controlled way.
+
+## Anatomy of a ResourceGraphDefinition
+
+A ResourceGraphDefinition, like any Kubernetes resource, consists of three main parts:
+
+1. **Metadata**: name, labels, etc.
+2. **Spec**: Defines the structure and properties of the ResourceGraphDefinition
+3. **Status**: Reflects the current state of the ResourceGraphDefinition
+
+The `spec` section of a ResourceGraphDefinition contains two main components:
+
+- **Schema**: Defines what an instance of your API looks like:
+  - What users can configure during creation and update
+  - What status information they can view
+  - Default values and validation rules
+- **Resources**: Specifies the Kubernetes resources to create:
+  - Resource templates
+  - Dependencies between resources
+  - Conditions for inclusion
+  - Readiness criteria
+  - [External References](#resourcegraphdefinition-more-about-resources)
+
+This structure translates to YAML as follows:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-resourcegraphdefinition # Metadata section
+spec:
+  schema: # Define your API
+    apiVersion: v1alpha1 # API version
+    kind: MyAPI # API kind
+    spec: {} # fields users can configure
+    status: {} # fields kro will populate
+
+  # Define the resources kro will manage
+  resources:
+    - id: resource1
+      # declare your resources along with default values and variables
+      template: {}
+```
+
+Let's look at each component in detail...
+
+## Understanding the Schema
+
+The schema section defines your new API's structure. It determines:
+
+- What fields users can configure when creating instances
+- What status information they can view
+- Type validation and default values
+
+Here's an example schema:
+
+```yaml
+schema:
+  apiVersion: v1alpha1
+  kind: WebApplication # This becomes your new API type
+  spec:
+    # Fields users can configure using a simple, straightforward syntax
+    name: string
+    image: string | default="nginx"
+    replicas: integer | default=3
+    ingress:
+      enabled: boolean | default=false
+
+  status:
+    # Fields kro will populate automatically from your resources
+    # Types are inferred from these CEL expressions
+    availableReplicas: ${deployment.status.availableReplicas}
+    conditions: ${deployment.status.conditions}
+
+  validation:
+    # Validating admission policies added to the new API type's CRD
+    - expression: "${ self.image == 'nginx' || !self.ingress.enabled }"
+      message: "Only nginx based applications can have ingress enabled"
+
+  additionalPrinterColumns:
+    # Printer columns shown for the created custom resource
+    - jsonPath: .status.availableReplicas
+      name: Available replicas
+      type: integer
+    - jsonPath: .spec.image
+      name: Image
+      type: string
+```
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI spec compatible.
+No need to write complex OpenAPI schemas - just define your fields and types in
+a straightforward way. For the complete specification of this format, check out
+the [Simple Schema specification](./10-simple-schema.md). Status fields use CEL
+expressions to reference fields from resources defined in your ResourceGraphDefinition.
+kro automatically:
+
+- Infers the correct types from your expressions
+- Validates that referenced resources exist
+- Updates these fields as your resources change
+
+## Processing
+
+When you create a **ResourceGraphDefinition**, kro processes it in several steps to ensure
+correctness and set up the necessary components:
+
+1. **Validation**: kro validates your **ResourceGraphDefinition** to ensure it's well
+   formed and follows the correct syntax, maximizing the chances of successful
+   deployment, and catching as many errors as possible early on. It:
+
+   - Validates your schema definition follows the simple schema format
+   - Ensures all resource templates are valid Kubernetes manifests
+   - Checks that referenced values exist and are of the correct type
+   - Confirms resource dependencies form a valid Directed Acyclic Graph(DAG)
+     without cycles
+   - Validates all CEL expressions in status fields and conditions
+
+2. **API Generation**: kro generates and registers a new CRD in your cluster
+   based on your schema. For example, if your **ResourceGraphDefinition** defines a
+   `WebApplication` API, kro creates a CRD that:
+
+   - Provides API validation based on your schema definition
+   - Automatically applies default values you've defined
+   - Makes status information available to users and other systems
+   - Integrates seamlessly with kubectl and other Kubernetes tools
+
+3. **Controller Configuration**: kro configures itself to watch for instances of
+   your new API and:
+
+   - Creates all required resources following the dependency order
+   - Manages references and value passing between resources
+   - Handles the complete lifecycle for create, update, and delete operations
+   - Keeps status information up to date based on actual resource states
+
+For instance, when you create a `WebApplication` ResourceGraphDefinition, kro generates
+the `webapplications.kro.run` CRD. When users create instances of this API, kro
+manages all the underlying resources (Deployments, Services, Custom Resources,
+etc.) automatically.
+
+kro continuously monitors your ResourceGraphDefinition for changes, updating the API and
+its behavior accordingly.
+
+## Instance Example
+
+After the **ResourceGraphDefinition** is validated and registered in the cluster, users
+can create instances of it. Here's an example of how an instance for the
+`WebApplication` might look:
+
+```yaml title="my-web-app-instance.yaml"
+apiVersion: kro.run/v1alpha1
+kind: WebApplication
+metadata:
+  name: my-web-app
+spec:
+  appName: awesome-app
+  image: nginx:latest
+  replicas: 3
+```
+
+## More about Resources
+
+Users can specify more controls in resources in `.spec.resources[]` 
+
+```yaml
+spec:
+  resources:
+    - id: my-resource
+      template || externalRef: {} # users can either template resources or reference objects outside the graph
+      readyWhen:
+      # users can specify CEL expressions to determine when a resource is ready
+      - ${deployment.status.conditions.exists(x, x.type == 'Available' && x.status == "True")}
+      includeWhen:
+      # users can specify CEL expressions to determine when a resource should be included in the graph
+      - ${schema.spec.value.enabled}
+```
+
+### Using `externalRef` to reference Objects outside the ResourceGraphDefinition.
+
+Users can specify if the object is something that is created out-of-band and needs to be referenced in the RGD.
+An external reference could be specified like this:
+```
+resources:
+   id: projectConfig
+   externalRef:
+     apiVersion: corp.platform.com/v1
+     kind: Project
+     metadata:
+       name: default-project
+       namespace: # optional, if empty uses instance namespace
+```
+
+As part of processing the Resource Graph, the instance reconciler waits for the `externalRef` object to be present and reads the object from the cluster as a node in the graph. Subsequent resources can use data from this node.
+
+
+### Using Conditional CEL Expressions (`?`)
+
+KRO can make use of CEL Expressions (see [this proposal for details](https://github.com/google/cel-spec/wiki/proposal-246) or look at the [CEL Implementation Reference](https://pkg.go.dev/github.com/google/cel-go/cel#hdr-Syntax_Changes-OptionalTypes)) to define optional runtime conditions for resources based on the conditional operator `?`.
+
+This allows you to optionally define values that have no predefined schema or are not hard dependencies in the Graph.
+
+#### Using `?` for referencing schema-less objects like `ConfigMap` or `Secret`
+
+You can use the `optional` operator to reference objects that do not have a predefined schema in the ResourceGraphDefinition. This is useful for referencing objects that may or may not exist at runtime.
+
+> :warning: `?` removes the ability of KRO to introspect the schema of the referenced object. Thus, it cannot wait for fields after the `?` to be present. It is recommended to use conditional expressions only for objects that are not critical to the ResourceGraphDefinition's operation or when the schema cannot be known at design time.
+
+A config map can be referenced like this:
+
+```yaml title="config-map.yaml"
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: demo
+data:
+  VALUE: "foobar"
+```
+
+```yaml title="external reference in ResourceGraphDefinition"
+- id: external
+  externalRef:
+    apiVersion: v1
+    kind: ConfigMap
+    metadata:
+      name: demo
+      namespace: default
+```
+
+With this reference, you can access the data in your schema:
+
+```text title="CEL Expression"
+${external.data.?VALUE}
+```
+
+> :warning: KRO will only wait for the external reference to be present in the cluster, but it will not validate the schema of the referenced config. If the config map does not have the `VALUE` field, the expression will evaluate to `null` and might result in unexpected behavior in your application if not handled properly.
+
+
+_For a more detailed example, see the [Optional Values & External References](../../examples/basic/optionals.md) documentation._
+
+## Status Reporting
+
+The `status` section of a `ResourceGraphDefinition` provides information about the state of the graph and it's generated `CustomResourceDefinition` and controller.
+
+`status` includes a stable `Ready` condition (as well as a set of technical `status.conditions` that provide more detailed information about the state of the graph and its resources).
+
+:::info
+
+When the `Ready` condition `status` is `True`, it indicates that the ResourceGraphDefinition is valid and you can use it to create [instances](./15-instances.md).
+
+:::
+
+:::warning
+
+Try to only rely on the `Ready` condition, as other condition types may change frequently and are more technical in nature, can change their API over time and are generally more indicative of KRO's internal state.
+
+:::
+
+Additionally, the ResourceGraphDefinition contains a `topologicalOrder` field that provides a list of resources in the order they should be processed. This is useful for understanding the dependencies between resources and their apply order.
+
+Generally a status in `ResourceGraphDefinition` may look like
+
+```yaml
+status:
+  conditions:
+    - lastTransitionTime: "2025-08-06T17:26:41Z"
+      message: resource graph and schema are valid
+      observedGeneration: 1
+      reason: Valid
+      status: "True"
+      type: ResourceGraphAccepted
+    - lastTransitionTime: "2025-08-06T17:26:41Z"
+      message: kind DeploymentService has been accepted and ready
+      observedGeneration: 1
+      reason: Ready
+      status: "True"
+      type: KindReady
+    - lastTransitionTime: "2025-08-06T17:26:41Z"
+      message: controller is running
+      observedGeneration: 1
+      reason: Running
+      status: "True"
+      type: ControllerReady
+    - lastTransitionTime: "2025-08-06T17:26:41Z"
+      message: ""
+      observedGeneration: 1
+      reason: Ready
+      status: "True"
+      type: Ready
+  state: Active
+  topologicalOrder:
+    - configmap
+    - deployment
+```
diff --git a/website/versioned_docs/version-0.4.1/docs/concepts/10-simple-schema.md b/website/versioned_docs/version-0.4.1/docs/concepts/10-simple-schema.md
new file mode 100644
index 0000000..06e66e4
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/concepts/10-simple-schema.md
@@ -0,0 +1,282 @@
+---
+sidebar_position: 2
+---
+
+# Simple Schema
+
+**kro** follows a different approach for defining your API schema and shapes. It
+leverages a human-friendly and readable syntax that is OpenAPI specification
+compatible. Here's a comprehensive example:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: web-application
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: WebApplication
+    spec:
+      # Basic types
+      name: string | required=true description="My Name"
+      replicas: integer | default=1 minimum=1 maximum=100
+      image: string | required=true
+
+      # Unstructured objects
+      values: object | required=true
+
+      # Structured type
+      ingress:
+        enabled: boolean | default=false
+        host: string | default="example.com"
+        path: string | default="/"
+
+      # Array type
+      ports: "[]integer"
+
+      # Map type
+      env: "map[string]mytype"
+
+    # Custom Types
+    types:
+      myType:
+        value1: string | required=true
+        value2: integer | default=42
+
+    status:
+      # Status fields with auto-inferred types
+      availableReplicas: ${deployment.status.availableReplicas}
+      serviceEndpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Type Definitions
+
+### Basic Types
+
+kro supports these foundational types:
+
+- `string`: Text values
+- `integer`: Whole numbers
+- `boolean`: True/False values
+- `float`: Decimal numbers
+
+For example:
+
+```yaml
+name: string
+age: integer
+enabled: boolean
+price: float
+```
+
+### Structure Types
+
+You can create complex objects by nesting fields. Each field can use any type,
+including other structures:
+
+```yaml
+# Simple structure
+address:
+  street: string
+  city: string
+  zipcode: string
+
+# Nested structures
+user:
+  name: string
+  address: # Nested object
+    street: string
+    city: string
+  contacts: "[]string" # Array of strings
+```
+
+### Unstructured Objects
+
+Unstructured objects are declared using `object` as a type.
+
+:::warning
+
+This disables the field-validation normally offered by kro, and forwards the values to your RGD as-is. This is generally discouraged and should therefore be used with caution. In most cases, using a structured object is a better approach.
+
+:::
+
+```yaml
+kind: ResourceGraphDefintion
+metadata: {}
+spec:
+  schema:
+    spec:
+      additionalHelmChartValues: object
+```
+
+This allows you to pass data to your CRDs directly in cases where the schema is not known in advance. This type supports any valid object, and can mix and match different primitives as well as structured types.
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: CRDWithUnstructuredObjects
+metadata:
+  name: test-instance
+spec:
+  additionalHelmChartValues:
+    boolean-value: true
+    numeric-value: 42
+    structural-type:
+      with-additional:
+        nested: fields
+    string-value: my-string
+    mapping-value:
+      - item1
+      - item2
+      - item3
+```
+
+### Array Types
+
+Arrays are denoted using `[]` syntax:
+
+- Basic arrays: `[]string`, `[]integer`, `[]boolean`
+
+Examples:
+
+```yaml
+tags: []string
+ports: []integer
+```
+
+### Map Types
+
+Maps are key-value pairs denoted as `map[keyType]valueType`:
+
+- `map[string]string`: String to string mapping
+- `map[string]integer`: String to integer mapping
+
+Examples:
+
+```yaml
+labels: "map[string]string"
+metrics: "map[string]float"
+```
+
+### Custom Types
+
+Custom types are specified in the separate `types` section.
+They provide a map of names to type specifications that follow the simple schema.
+
+Example:
+
+```yaml
+schema:
+  types:
+    Person:
+      name: string
+      age: integer
+  spec:
+    people: '[]Person | required=true`
+```
+
+## Validation and Documentation
+
+Fields can have multiple markers for validation and documentation:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+### Supported Markers
+
+- `required=true`: Field must be provided
+- `default=value`: Default value if not specified
+- `description="..."`: Field documentation
+- `enum="value1,value2"`: Allowed values
+- `minimum=value`: Minimum value for numbers
+- `maximum=value`: Maximum value for numbers
+
+Multiple markers can be combined using the `|` separator.
+
+For example:
+
+```yaml
+name: string | required=true default="app" description="Application name"
+replicas: integer | default=3 minimum=1 maximum=10
+price: float | minimum=0.01 maximum=999.99
+mode: string | enum="debug,info,warn,error" default="info"
+```
+
+## Status Fields
+
+Status fields use CEL expressions to reference values from resources. kro
+automatically:
+
+- Infers the correct types from the expressions
+- Validates that referenced resources exist
+- Updates values when the underlying resources change
+
+```yaml
+status:
+  # Types are inferred from the referenced fields
+  availableReplicas: ${deployment.status.availableReplicas}
+  endpoint: ${service.status.loadBalancer.ingress[0].hostname}
+```
+
+## Default Status Fields
+
+kro automatically injects two fields to every instance's status:
+
+### 1. Conditions
+
+An array of condition objects tracking the instance's state:
+
+```yaml
+status:
+  conditions:
+    - type: string # e.g., "Ready", "Progressing"
+      status: string # "True", "False", "Unknown"
+      lastTransitionTime: string
+      reason: string
+      message: string
+```
+
+Common condition types:
+
+- `Ready`: Instance is fully reconciled
+- `Progressing`: Working towards desired state
+- `Degraded`: Operational but not optimal
+- `Error`: Reconciliation error occurred
+
+### 2. State
+
+A high-level summary of the instance's status:
+
+```yaml
+status:
+  state: string # Ready, Progressing, Degraded, Unknown, Deleting
+```
+
+:::tip
+
+`conditions` and `state` are reserved words. If defined in your schema, kro will
+override them with its own values.
+
+:::
+
+## Additional Printer Columns
+
+You can define `additionalPrinterColumns` for the created CRD through the ResourceGraphDefinition by setting them on `spec.schema.additionalPrinterColumns`.
+
+```yaml
+schema:
+  spec:
+    image: string | default="nginx"
+  status:
+    availableReplicas: ${deployment.status.availableReplicas}
+  additionalPrinterColumns:
+    - jsonPath: .status.availableReplicas
+      name: Available replicas
+      type: integer
+    - jsonPath: .spec.image
+      name: Image
+      type: string
+```
diff --git a/website/versioned_docs/version-0.4.1/docs/concepts/15-instances.md b/website/versioned_docs/version-0.4.1/docs/concepts/15-instances.md
new file mode 100644
index 0000000..354f6c4
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/concepts/15-instances.md
@@ -0,0 +1,118 @@
+---
+sidebar_position: 15
+---
+
+# Instances
+
+Once **kro** processes your ResourceGraphDefinition, it creates a new API in your cluster.
+Users can then create instances of this API to deploy resources in a consistent,
+controlled way.
+
+## Understanding Instances
+
+An instance represents your deployed application. When you create an instance,
+you're telling kro "I want this set of resources running in my cluster". The
+instance contains your configuration values and serves as the single source of
+truth for your application's desired state. Here's an example instance of our
+WebApplication API:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: WebApplication
+metadata:
+  name: my-app
+spec:
+  name: web-app
+  image: nginx:latest
+  ingress:
+    enabled: true
+```
+
+When you create this instance, kro:
+
+- Creates all required resources (Deployment, Service, Ingress)
+- Configures them according to your specification
+- Manages them as a single unit
+- Keeps their status up to date
+
+## How kro Manages Instances
+
+kro uses the standard Kubernetes reconciliation pattern to manage instances:
+
+1. **Observe**: Watches for changes to your instance or its resources
+2. **Compare**: Checks if current state matches desired state
+3. **Act**: Creates, updates, or deletes resources as needed
+4. **Report**: Updates status to reflect current state
+
+This continuous loop ensures your resources stay in sync with your desired
+state, providing features like:
+
+- Self-healing
+- Automatic updates
+- Consistent state management
+- Status tracking
+
+## Monitoring Your Instances
+
+KRO provides rich status information for every instance:
+
+```bash
+$ kubectl get webapplication my-app
+NAME     STATUS    SYNCED   AGE
+my-app   ACTIVE    true     30s
+```
+
+For detailed status, check the instance's YAML:
+
+```yaml
+status:
+  state: ACTIVE # High-level instance state
+  availableReplicas: 3 # Status from Deployment
+  conditions: # Detailed status conditions
+    - type: Ready
+      status: "True"
+      lastTransitionTime: "2024-07-23T01:01:59Z"
+      reason: ResourcesAvailable
+      message: "All resources are available and configured correctly"
+```
+
+### Understanding Status
+
+Every instance includes:
+
+1. **State**: High-level status
+
+   - `ACTIVE`: Indicates that the instance is successfully running and active.
+   - `IN_PROGRESS`: Indicates that the instance is currently being processed or reconciled.
+   - `FAILED`: Indicates that the instance has failed to be properly reconciled.
+   - `DELETING`: Indicates that the instance is in the process of being deleted.
+   - `ERROR`: Indicates that an error occurred during instance processing.
+
+2. **Conditions**: Detailed status information
+
+   - `Ready`: Instance is fully operational
+   - `Progressing`: Changes are being applied
+   - `Degraded`: Operating but not optimal
+   - `Error`: Problems detected
+
+3. **Resource Status**: Status from your resources
+   - Values you defined in your ResourceGraphDefinition's status section
+   - Automatically updated as resources change
+
+## Best Practices
+
+- **Version Control**: Keep your instance definitions in version control
+  alongside your application code. This helps track changes, rollback when
+  needed, and maintain configuration history.
+
+- **Use Labels Effectively**: Add meaningful labels to your instances for better
+  organization, filtering, and integration with other tools. kro propagates
+  labels to the sub resources for easy identification.
+
+- **Active Monitoring**: Regularly check instance status beyond just "Running".
+  Watch conditions, resource status, and events to catch potential issues early
+  and understand your application's health.
+
+- **Regular Reviews**: Periodically review your instance configurations to
+  ensure they reflect current requirements and best practices. Update resource
+  requests, limits, and other configurations as your application needs evolve.
diff --git a/website/versioned_docs/version-0.4.1/docs/concepts/20-access-control.md b/website/versioned_docs/version-0.4.1/docs/concepts/20-access-control.md
new file mode 100644
index 0000000..eb5878c
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/concepts/20-access-control.md
@@ -0,0 +1,75 @@
+---
+sidebar_position: 20
+---
+
+# Access Control
+
+There are currently two modes of access control supported by **kro**, if you
+[install through the Helm chart](../getting-started/01-Installation.md#install-kro-using-helm):
+
+- `unrestricted`
+
+- `aggregation`
+
+The mode is selected with a `values` property `rbac.mode`, and defaults to `unrestricted`.
+
+## `unrestricted` Access
+
+In the `unrestricted` access mode, the chart includes a `ClusterRole` granting
+**kro** _full control to every resource type in your cluster_. This can be
+useful for experimenting in a test environment, where access control is not
+necessary, but is not recommended in a production environment.
+
+In this mode, anyone with access to create `ResourceGraphDefinition` resources,
+effectively also has admin access to the cluster.
+
+## `aggregation` Access
+
+In the `aggregation` access mode, the chart includes an [_aggregated_ `ClusterRole`](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#aggregated-clusterroles)
+which dynamically includes all rules from all `ClusterRoles` that have the label
+`rbac.kro.run/aggregate-to-controller: "true"`.
+
+There is a very minimal set of permissions provisioned by the chart itself, just
+enough to let **kro** run at all: full permissions for `ResourceGraphDefinition`s
+and its subresources, and full permissions for `CustomResourceDefinitions` as
+**kro** will create them in response to the existence of an RGD.
+
+However, this does _not_ automatically set up permissions for **kro** to actually
+reconcile those generated CRDs! In other words, when using this mode, you will
+need to provision additional access for **kro** for every new resource type you
+define.
+
+### Example
+
+If you want to create a `ResourceGraphDefinition` that specifies a new resource
+type with `kind: Foo`, and where the graph includes an `apps/v1/Deployment` and
+a `v1/ConfigMap`, you will need to create the following `ClusterRole` to ensure
+**kro** has enough access to reconcile your resources:
+
+```yaml
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  labels:
+    rbac.kro.run/aggregate-to-controller: "true"
+  name: kro:controller:foos
+rules:
+  - apiGroups:
+      - kro.run
+    resources:
+      - foos
+    verbs:
+      - "*"
+  - apiGroups:
+      - apps
+    resources:
+      - deployments
+    verbs:
+      - "*"
+  - apiGroups:
+      - ""
+    resources:
+      - configmaps
+    verbs:
+      - "*"
+```
diff --git a/website/versioned_docs/version-0.4.1/docs/concepts/_category_.json b/website/versioned_docs/version-0.4.1/docs/concepts/_category_.json
new file mode 100644
index 0000000..9645894
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/concepts/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Concepts",
+  "position": 40,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.4.1/docs/faq.md b/website/versioned_docs/version-0.4.1/docs/faq.md
new file mode 100644
index 0000000..84bdb51
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/faq.md
@@ -0,0 +1,66 @@
+---
+sidebar_label: "FAQ"
+sidebar_position: 100
+---
+
+# FAQ
+
+1. **What is kro?**
+
+   Kube Resource Orchestrator (**kro**) is a new operator for Kubernetes that
+   simplifies the creation of complex Kubernetes resource configurations. kro
+   lets you create and manage custom groups of Kubernetes resources by defining
+   them as a _ResourceGraphDefinition_, the project's fundamental custom resource.
+   ResourceGraphDefinition specifications define a set of resources and how they relate to
+   each other functionally. Once defined, resource groups can be applied to a
+   Kubernetes cluster where the kro controller is running. Once validated by
+   kro, you can create instances of your resource group. kro translates your
+   ResourceGraphDefinition instance and its parameters into specific Kubernetes resources
+   and configurations which it then manages for you.
+
+2. **How does kro work?**
+
+   kro is designed to use core Kubernetes primitives to make resource grouping,
+   customization, and dependency management simpler. When a ResourceGraphDefinition is
+   applied to the cluster, the kro controller verifies its specification, then
+   dynamically creates a new CRD and registers it with the API server. kro then
+   deploys a dedicated controller to respond to instance events on the CRD. This
+   microcontroller is responsible for managing the lifecycle of resources
+   defined in the ResourceGraphDefinition for each instance that is created.
+
+3. **How do I use kro?**
+
+   First, you define your custom resource groups by creating _ResourceGraphDefinition_
+   specifications. These specify one or more Kubernetes resources, and can
+   include specific configuration for each resource.
+
+   For example, you can define a _WebApp_ resource group that is composed of a
+   _Deployment_, pre-configured to deploy your web server backend, and a
+   _Service_ configured to run on a specific port. You can just as easily create
+   a more complex _WebAppWithDB_ resource group by combining the existing
+   _WebApp_ resource group with a _Table_ custom resource to provision a cloud
+   managed database instance for your web app to use.
+
+   Once you have defined a ResourceGraphDefinition, you can apply it to a Kubernetes
+   cluster where the kro controller is running. kro will take care of the heavy
+   lifting of creating CRDs and deploying dedicated controllers in order to
+   manage instances of your new custom resource group.
+
+   You are now ready to create instances of your new custom resource group, and
+   kro will respond by dynamically creating, configuring, and managing the
+   underlying Kubernetes resources for you.
+
+4. **Why did you build this project?**
+
+   We want to help streamline and simplify building with Kubernetes. Building
+   with Kubernetes means dealing with resources that need to operate and work
+   together, and orchestrating this can get complex and difficult at scale. With
+   this project, we're taking a first step in reducing the complexity of
+   resource dependency management and customization, paving the way for a simple
+   and scalable way to create complex custom resources for Kubernetes.
+
+5. **Can I use this in production?**
+
+   This project is in active development and not yet intended for production
+   use. The _ResourceGraphDefinition_ CRD and other APIs used in this project are not
+   solidified and highly subject to change.
diff --git a/website/versioned_docs/version-0.4.1/docs/getting-started/01-Installation.md b/website/versioned_docs/version-0.4.1/docs/getting-started/01-Installation.md
new file mode 100644
index 0000000..0551cb6
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/getting-started/01-Installation.md
@@ -0,0 +1,117 @@
+---
+sidebar_position: 1
+---
+
+# Installing kro
+
+This guide walks you through the process of installing kro on your Kubernetes
+cluster using Helm.
+
+## Prerequisites
+
+Before you begin, ensure you have the following:
+
+1. `Helm` 3.x installed
+2. `kubectl` installed and configured to interact with your Kubernetes cluster
+
+## Installation Steps
+
+:::info[**Alpha Stage**]
+
+kro is currently in alpha stage. While the images are publicly available, please
+note that the software is still under active development and APIs may change.
+
+:::
+
+### Install kro using Helm
+
+Once authenticated, install kro using the Helm chart:
+
+Fetch the latest release version from GitHub
+```sh
+export KRO_VERSION=$(curl -sL \
+    https://api.github.com/repos/kro-run/kro/releases/latest | \
+    jq -r '.tag_name | ltrimstr("v")'
+  )
+```
+Validate `KRO_VERSION` populated with a version
+```
+echo $KRO_VERSION
+```
+Install kro using Helm
+```
+helm install kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --create-namespace \
+  --version=${KRO_VERSION}
+```
+
+:::info[**Troubleshooting Helm Install**]
+Note that authentication is not required for pulling charts from public GHCR (GitHub Container Registry) repositories.
+
+Helm install download failures occur due to expired local credentials. To resolve this issue, clear your local credentials cache by running `helm registry logout ghcr.io` in your terminal, then retry the installation.
+
+:::
+
+## Verifying the Installation
+
+After running the installation command, verify that Kro has been installed
+correctly:
+
+1. Check the Helm release:
+
+   ```sh
+   helm -n kro list
+   ```
+
+   Expected result: You should see the "kro" release listed.
+   ```
+    NAME	NAMESPACE	REVISION	STATUS  
+    kro 	kro      	1       	deployed
+   ```
+
+2. Check the kro pods:
+   ```sh
+   kubectl get pods -n kro
+   ```
+   Expected result: You should see kro-related pods running.
+   ```
+    NAME                        READY   STATUS             RESTARTS   AGE
+    kro-7d98bc6f46-jvjl5        1/1     Running            0           1s 
+   ```
+
+## Upgrading kro
+
+To upgrade to a newer version of kro, use the Helm upgrade command:
+
+Replace `<new-version>` with the version you want to upgrade to.
+```bash
+export KRO_VERSION=<new-version>
+```
+
+Upgrade the controller
+```
+helm upgrade kro oci://ghcr.io/kro-run/kro/kro \
+  --namespace kro \
+  --version=${KRO_VERSION}
+```
+
+:::info[**CRD Updates**]
+
+Helm does not support updating CRDs, so you may need to manually update or
+remove and reapply kro related CRDs. For more information, refer to the Helm
+documentation.
+
+:::
+
+## Uninstalling kro
+
+To uninstall kro, use the following command:
+
+```bash
+helm uninstall kro -n kro
+```
+
+Keep in mind that this command will remove all kro resources from your cluster,
+except for the ResourceGraphDefinition CRD and any other custom resources you may have
+created.
diff --git a/website/versioned_docs/version-0.4.1/docs/getting-started/02-deploy-a-resource-graph-definition.md b/website/versioned_docs/version-0.4.1/docs/getting-started/02-deploy-a-resource-graph-definition.md
new file mode 100644
index 0000000..6ab9eb5
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/getting-started/02-deploy-a-resource-graph-definition.md
@@ -0,0 +1,227 @@
+---
+sidebar_position: 2
+---
+
+# Deploy Your First ResourceGraphDefinition
+
+This guide will walk you through creating your first Resource Graph Definition in **kro**.
+We'll create a simple `ResourceGraphDefinition` that demonstrates key kro features.
+
+## What is a **ResourceGraphDefinition**?
+
+A `ResourceGraphDefinition` lets you create new Kubernetes APIs that deploy multiple
+resources together as a single, reusable unit. In this example, we’ll create a
+`ResourceGraphDefinition` that packages a reusable set of resources, including a
+`Deployment`, `Service`, and `Ingress`. These resources are available in any
+Kubernetes cluster. Users can then call the API to deploy resources as a single
+unit, ensuring they're always created together with the right configuration.
+
+Under the hood, when you create a `ResourceGraphDefinition`, kro:
+
+1. Treats your resources as a Directed Acyclic Graph (DAG) to understand their
+   dependencies
+2. Validates resource definitions and detects the correct deployment order
+3. Creates a new API (CRD) in your cluster
+4. Configures itself to watch and serve instances of this API
+
+## Prerequisites
+
+Before you begin, make sure you have the following:
+
+- **kro** [installed](./01-Installation.md) and running in your Kubernetes
+  cluster.
+- `kubectl` installed and configured to interact with your Kubernetes cluster.
+
+## Create your Application ResourceGraphDefinition
+
+Let's create a Resource Graph Definition that combines a `Deployment`, a `Service` and
+`Ingress`. Save this as `resourcegraphdefinition.yaml`:
+
+```yaml title="resourcegraphdefinition.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
+
+### Deploy the ResourceGraphDefinition
+
+1. **Create a ResourceGraphDefinition manifest file**: Create a new file with the
+   `ResourceGraphDefinition` definition. You can use the example above.
+
+2. **Apply the `ResourceGraphDefinition`**: Use the `kubectl` command to deploy the
+   ResourceGraphDefinition to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f resourcegraphdefinition.yaml
+   ```
+
+3. **Inspect the `ResourceGraphDefinition`**: Check the status of the resources created by
+   the ResourceGraphDefinition using the `kubectl` command:
+
+   ```bash
+   kubectl get rgd my-application -owide
+   ```
+
+   You should see the ResourceGraphDefinition in the `Active` state, along with relevant
+   information to help you understand your application:
+
+   ```bash
+   NAME             APIVERSION   KIND          STATE    TOPOLOGICALORDER                     AGE
+   my-application   v1alpha1     Application   Active   ["deployment","service","ingress"]   49
+   ```
+
+### Create your Application Instance
+
+Now that your `ResourceGraphDefinition` is created, kro has generated a new API
+(Application) that orchestrates the creation of a `Deployment`, a `Service`, and
+an `Ingress`. Let's use it!
+
+1. **Create an Application instance**: Create a new file named `instance.yaml`
+   with the following content:
+
+   ```yaml title="instance.yaml"
+   apiVersion: kro.run/v1alpha1
+   kind: Application
+   metadata:
+     name: my-application-instance
+   spec:
+     name: my-awesome-app
+     ingress:
+       enabled: true
+   ```
+
+2. **Apply the Application instance**: Use the `kubectl` command to deploy the
+   Application instance to your Kubernetes cluster:
+
+   ```bash
+   kubectl apply -f instance.yaml
+   ```
+
+3. **Inspect the Application instance**: Check the status of the resources
+
+   ```bash
+   kubectl get applications
+   ```
+
+   After a few seconds, you should see the Application instance in the `Active`
+   state:
+
+   ```bash
+   NAME                      STATE    SYNCED   AGE
+   my-application-instance   ACTIVE   True     10s
+   ```
+
+4. **Inspect the resources**: Check the resources created by the Application
+   instance:
+
+   ```bash
+   kubectl get deployments,services,ingresses
+   ```
+
+   You should see the `Deployment`, `Service`, and `Ingress` created by the
+   Application instance.
+
+   ```bash
+   NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
+   deployment.apps/my-awesome-app   3/3     3            3           69s
+
+   NAME                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
+   service/my-awesome-app-service   ClusterIP   10.100.167.72   <none>        80/TCP    65s
+
+   NAME                                               CLASS    HOSTS   ADDRESS   PORTS   AGE
+   ingress.networking.k8s.io/my-awesome-app-ingress   <none>   *                 80      62s
+   ```
+
+### Delete the Application instance
+
+kro can also help you clean up resources when you're done with them.
+
+1. **Delete the Application instance**: Clean up the resources by deleting the
+   Application instance:
+
+   ```bash
+   kubectl delete application my-application-instance
+   ```
+
+   Now, the resources created by the Application instance will be deleted.
diff --git a/website/versioned_docs/version-0.4.1/docs/getting-started/_category_.json b/website/versioned_docs/version-0.4.1/docs/getting-started/_category_.json
new file mode 100644
index 0000000..723093d
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/getting-started/_category_.json
@@ -0,0 +1,6 @@
+{
+  "label": "Getting started",
+  "position": 20,
+  "collapsible": true,
+  "collapsed": false
+}
diff --git a/website/versioned_docs/version-0.4.1/docs/overview.md b/website/versioned_docs/version-0.4.1/docs/overview.md
new file mode 100644
index 0000000..29daff7
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/overview.md
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Figure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for the Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Figure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Figure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.4.1/docs/overview.md.bak b/website/versioned_docs/version-0.4.1/docs/overview.md.bak
new file mode 100644
index 0000000..29daff7
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/docs/overview.md.bak
@@ -0,0 +1,116 @@
+---
+sidebar_position: 1
+---
+
+# What is kro?
+
+**kro** (Kube Resource Orchestrator) is an open-source, Kubernetes-native project
+that allows you to define custom **Kubernetes APIs** using simple and straightforward
+configuration. With kro, you can easily configure new custom APIs that create a
+group of Kubernetes objects and the logical operations between them. kro leverages
+[CEL (Common Expression Language)](https://github.com/google/cel-spec), the same
+language used by Kubernetes webhooks, for logical operations. Using CEL expressions,
+you can easily pass values from one object to another and incorporate conditionals into
+your custom API definitions. Based on the CEL expressions, kro automatically calculates
+the order in which objects should be created. You can define default values for fields
+in the API specification, streamlining the process for end users who can then
+effortlessly invoke these custom APIs to create grouped resources.
+
+# How does kro work?
+
+### Developer interface
+
+When the end user applies a YAML spec to the cluster using the **Custom API**,
+the API creates a set of resources within the cluster. These resources can
+include both **native Kubernetes** resources and any **Custom Resource
+Definitions (CRDs)** installed in the cluster. Some of these resources may
+create additional resources outside of your cluster.
+
+As depicted in the following diagram, the Developers call the Custom API, which
+creates resources such as the **Deployment**, **Ingress**, **ServiceAccount**,
+**Prometheus Monitor**, **IAM Role**, **IAM Policy**, and **Amazon S3 Bucket**.
+This allows the Developers to easily manage and deploy their applications in a
+standardized and streamlined manner.
+
+<div align="center">
+
+![End user interface - Custom API](/img/architecture/KRO-Dev-Interface.png)
+_Figure 1: End user interface - Custom API_
+
+</div>
+
+### ResourceGraphDefinition
+
+When you install **Kro** in your cluster, it installs a Custom Resource
+Definition (CRD) called **ResourceGraphDefinition (RG)**. The **Platform**, **Security**,
+and **Compliance** teams can collaborate to create custom APIs by defining
+Custom Resources for the ResourceGraphDefinition CRD.
+
+In the depicted example, the **Platform Team** has created a **RG** with
+arbitrary name "Application Stack" that encapsulates the necessary resources,
+along with any additional logic, abstractions, and security best practices. When
+the RGD is applied to the cluster, a new API of kind ApplicationStack is created
+and available for the Developer to interact with. The Developers no longer need to
+directly manage the underlying infrastructure complexities, as the custom API
+handles the deployment and configuration of the required resources.
+
+<div align="center">
+
+![Platform Team Interface](/img/architecture/KRO-Platform-Team.png)
+_Figure 2: ResourceGraphDefinition (RG) - Platform Team Interface_
+
+</div>
+
+### ResourceGraphDefinition Instance
+
+Developer teams can create multiple instances of the **Application Stack**, each
+tailored to their specific requirements. As shown, **Dev Team A** and **Dev Team
+B** have both instantiated their own Application Stacks. While the underlying
+resources are similar, **Dev Team A** has chosen to expose their service
+externally, leveraging the Ingress option, while **Dev Team B** has opted to
+keep their service internal to the cluster. This flexibility allows each
+development team to customize their application stack based on their specific
+requirements.
+
+<div align="center">
+
+![ResourceGraphDefinition Instance](/img/architecture/KRO-Instance.png)
+_Figure 3: ResourceGraphDefinition Instance (RGI)_
+
+</div>
+
+# Why kro?
+
+### Manage any group of resources as one unit
+
+Using **kro**, the **Platform Team** can enable Developer teams to quickly
+deploy and manage applications and their dependencies as one unit, handling the
+entire lifecycle from deployment to maintenance. The new APIs integrate
+seamlessly with developers' existing CD tools, preserving familiar processes and
+interfaces to simplify adoption.
+
+### Collaborate
+
+Transform **Kubernetes** into your unified platform configuration framework
+using **kro**. Platform, Compliance, and Security teams work together to develop
+APIs that standardize and streamline configurations, making it easier for
+Developer teams to adopt secure, compliant practices. This collaboration lets
+you build your organizational standards directly into the APIs, ensuring every
+application deployment aligns with security and compliance requirements without
+adding complexity for developers.
+
+### Standardize
+
+By creating unified APIs, you can define and enforce best practices across all
+environments, ensuring every application meets organizational requirements and
+achieving consistency across deployment environments.
+
+# Community
+
+We welcome questions, suggestions, and contributions from the community! To get
+involved, check out our
+[contributing guide](https://github.com/kro-run/kro/blob/main/CONTRIBUTING.md).
+For bugs or feature requests, feel free to
+[submit an issue](https://github.com/kro-run/kro/issues). You’re also invited to
+join our
+[community](https://github.com/kro-run/kro?tab=readme-ov-file#community-participation).
diff --git a/website/versioned_docs/version-0.4.1/examples/aws/ack-eks-cluster.md b/website/versioned_docs/version-0.4.1/examples/aws/ack-eks-cluster.md
new file mode 100644
index 0000000..6de9c75
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/aws/ack-eks-cluster.md
@@ -0,0 +1,222 @@
+---
+sidebar_position: 302
+---
+
+# EKS Cluster
+
+```yaml title="eks.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscluster.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSCluster
+    spec:
+      name: string
+      version: string
+    status:
+      networkingInfo:
+        vpcID: ${clusterVPC.status.vpcID}
+        subnetAZA: ${clusterSubnetA.status.subnetID}
+        subnetAZB: ${clusterSubnetB.status.subnetID}
+      clusterARN: ${cluster.status.ackResourceMetadata.arn}
+  # resources
+  resources:
+    - id: clusterVPC
+      readyWhen:
+        - ${clusterVPC.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: kro-cluster-vpc
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSSupport: true
+          enableDNSHostnames: true
+    - id: clusterElasticIPAddress
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: ElasticIPAddress
+        metadata:
+          name: kro-cluster-eip
+        spec: {}
+    - id: clusterInternetGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: InternetGateway
+        metadata:
+          name: kro-cluster-igw
+        spec:
+          vpc: ${clusterVPC.status.vpcID}
+    - id: clusterRouteTable
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: RouteTable
+        metadata:
+          name: kro-cluster-public-route-table
+        spec:
+          vpcID: ${clusterVPC.status.vpcID}
+          routes:
+            - destinationCIDRBlock: 0.0.0.0/0
+              gatewayID: ${clusterInternetGateway.status.internetGatewayID}
+    - id: clusterSubnetA
+      readyWhen:
+        - ${clusterSubnetA.status.state == "available"}
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet1
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterSubnetB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: kro-cluster-public-subnet2
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${clusterVPC.status.vpcID}
+          routeTables:
+            - ${clusterRouteTable.status.routeTableID}
+          mapPublicIPOnLaunch: true
+    - id: clusterNATGateway
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: NATGateway
+        metadata:
+          name: kro-cluster-natgateway1
+        spec:
+          subnetID: ${clusterSubnetB.status.subnetID}
+          allocationID: ${clusterElasticIPAddress.status.allocationID}
+    - id: clusterRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-role
+        spec:
+          name: kro-cluster-role
+          description: "kro created cluster cluster role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "eks.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterNodeRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-node-role
+        spec:
+          name: kro-cluster-node-role
+          description: "kro created cluster node role"
+          policies:
+            - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
+            - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
+            - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
+          assumeRolePolicyDocument: |
+            {
+              "Version": "2012-10-17",
+              "Statement": [
+                {
+                  "Effect": "Allow",
+                  "Principal": {
+                    "Service": "ec2.amazonaws.com"
+                  },
+                  "Action": "sts:AssumeRole"
+                }
+              ]
+            }
+    - id: clusterAdminRole
+      template:
+        apiVersion: iam.services.k8s.aws/v1alpha1
+        kind: Role
+        metadata:
+          name: kro-cluster-pia-role
+        spec:
+          name: kro-cluster-pia-role
+          description: "kro created cluster admin pia role"
+          policies:
+            - arn:aws:iam::aws:policy/AdministratorAccess
+          assumeRolePolicyDocument: |
+            {
+                "Version": "2012-10-17",
+                "Statement": [
+                    {
+                        "Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
+                        "Effect": "Allow",
+                        "Principal": {
+                            "Service": "pods.eks.amazonaws.com"
+                        },
+                        "Action": [
+                            "sts:AssumeRole",
+                            "sts:TagSession"
+                        ]
+                    }
+                ]
+            }
+    - id: cluster
+      readyWhen:
+        - ${cluster.status.status == "ACTIVE"}
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Cluster
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          name: ${schema.spec.name}
+          accessConfig:
+            authenticationMode: API_AND_CONFIG_MAP
+          roleARN: ${clusterRole.status.ackResourceMetadata.arn}
+          version: ${schema.spec.version}
+          resourcesVPCConfig:
+            endpointPrivateAccess: false
+            endpointPublicAccess: true
+            subnetIDs:
+              - ${clusterSubnetA.status.subnetID}
+              - ${clusterSubnetB.status.subnetID}
+    - id: clusterNodeGroup
+      template:
+        apiVersion: eks.services.k8s.aws/v1alpha1
+        kind: Nodegroup
+        metadata:
+          name: kro-cluster-nodegroup
+        spec:
+          name: kro-cluster-ng
+          diskSize: 100
+          clusterName: ${cluster.spec.name}
+          subnets:
+            - ${clusterSubnetA.status.subnetID}
+            - ${clusterSubnetB.status.subnetID}
+          nodeRole: ${clusterNodeRole.status.ackResourceMetadata.arn}
+          updateConfig:
+            maxUnavailable: 1
+          scalingConfig:
+            minSize: 1
+            maxSize: 1
+            desiredSize: 1
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/aws/ack-networking-stack.md b/website/versioned_docs/version-0.4.1/examples/aws/ack-networking-stack.md
new file mode 100644
index 0000000..f388171
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/aws/ack-networking-stack.md
@@ -0,0 +1,79 @@
+---
+sidebar_position: 303
+---
+
+# Networking Stack
+
+```yaml title="networking-stack.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: networkingstack.kro.run
+spec:
+  # CRD Schema
+  schema:
+    apiVersion: v1alpha1
+    kind: NetworkingStack
+    spec:
+      name: string
+    status:
+      networkingInfo:
+        vpcID: ${vpc.status.vpcID}
+        subnetAZA: ${subnetAZA.status.subnetID}
+        subnetAZB: ${subnetAZB.status.subnetID}
+        subnetAZC: ${subnetAZC.status.subnetID}
+        securityGroup: ${securityGroup.status.id}
+  # resources
+  resources:
+    - id: vpc
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: VPC
+        metadata:
+          name: vpc-${schema.spec.name}
+        spec:
+          cidrBlocks:
+            - 192.168.0.0/16
+          enableDNSHostnames: false
+          enableDNSSupport: true
+    - id: subnetAZA
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-a-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2a
+          cidrBlock: 192.168.0.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZB
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-b-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2b
+          cidrBlock: 192.168.64.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: subnetAZC
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: Subnet
+        metadata:
+          name: subnet-c-${schema.spec.name}
+        spec:
+          availabilityZone: us-west-2c
+          cidrBlock: 192.168.128.0/18
+          vpcID: ${vpc.status.vpcID}
+    - id: securityGroup
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: cluster-security-group-${schema.spec.name}
+        spec:
+          vpcID: ${vpc.status.vpcID}
+          name: my-sg-${schema.spec.name}
+          description: something something
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/aws/ack-valkey-cachecluster.md b/website/versioned_docs/version-0.4.1/examples/aws/ack-valkey-cachecluster.md
new file mode 100644
index 0000000..46c0b53
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/aws/ack-valkey-cachecluster.md
@@ -0,0 +1,76 @@
+---
+sidebar_position: 304
+---
+
+# Valkey cluster
+
+```yaml title="valkey-cachecluster.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: valkey.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: Valkey
+    spec:
+      name: string
+    status:
+      csgARN: ${cacheSubnetGroup.status.ackResourceMetadata.arn}
+      subnets: ${cacheSubnetGroup.status.subnets}
+      clusterARN: ${valkey.status.ackResourceMetadata.arn}
+  resources:
+    - id: networkingStack
+      template:
+        apiVersion: kro.run/v1alpha1
+        kind: NetworkingStack
+        metadata:
+          name: ${schema.spec.name}-networking-stack
+        spec:
+          name: ${schema.spec.name}-networking-stack
+    - id: cacheSubnetGroup
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheSubnetGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-subnet-group
+        spec:
+          cacheSubnetGroupDescription: "Valkey ElastiCache subnet group"
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          subnetIDs:
+            - ${networkingStack.status.networkingInfo.subnetAZA}
+            - ${networkingStack.status.networkingInfo.subnetAZB}
+            - ${networkingStack.status.networkingInfo.subnetAZC}
+    - id: sg
+      template:
+        apiVersion: ec2.services.k8s.aws/v1alpha1
+        kind: SecurityGroup
+        metadata:
+          name: ${schema.spec.name}-valkey-sg
+        spec:
+          name: ${schema.spec.name}-valkey-sg
+          description: "Valkey ElastiCache security group"
+          vpcID: ${networkingStack.status.networkingInfo.vpcID}
+          ingressRules:
+            - fromPort: 6379
+              toPort: 6379
+              ipProtocol: tcp
+              ipRanges:
+                - cidrIP: 0.0.0.0/0
+    - id: valkey
+      template:
+        apiVersion: elasticache.services.k8s.aws/v1alpha1
+        kind: CacheCluster
+        metadata:
+          name: ${schema.spec.name}-valkey
+        spec:
+          cacheClusterID: vote-valkey-cluster
+          cacheNodeType: cache.t3.micro
+          cacheSubnetGroupName: ${schema.spec.name}-valkey-subnet-group
+          engine: valkey
+          engineVersion: "8.x"
+          numCacheNodes: 1
+          port: 6379
+          securityGroupIDs:
+            - ${sg.status.id}
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/aws/aws-examples.md b/website/versioned_docs/version-0.4.1/examples/aws/aws-examples.md
new file mode 100644
index 0000000..71c1709
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/aws/aws-examples.md
@@ -0,0 +1,28 @@
+---
+sidebar_position: 301
+---
+
+:::info[**ACK controllers Dependency**]
+Most examples below will need ACK controllers to be running in the cluster either through kro or other means.
+:::
+
+# AWS Examples
+- [Deploying a Controller](./deploying-controller.md) Discover how to deploy a
+  Kubernetes controller using kro ResourceGraphDefinitions, including the necessary
+  Deployment, ServiceAccount, and CRDs.
+
+- [AWS Networking Stack](./ack-networking-stack.md) Learn how to define and
+  manage an AWS networking stack using kro ResourceGraphDefinitions, including VPCs,
+  subnets, and security groups.
+
+- [EKS Cluster with ACK CRDs](./ack-eks-cluster.md) Explore how to define and
+  manage an EKS cluster using AWS Controllers for Kubernetes (ACK) CRDs within a
+  kro ResourceGraphDefinition.
+
+- [Valkey CacheCluster with ACK CRDs](./ack-valkey-cachecluster.md) Learn how to
+  create and configure a Valkey CacheCluster using ACK CRDs in a kro
+  ResourceGraphDefinition.
+
+- [Pod and RDS DBInstance](./pod-rds-dbinstance.md) Deploy a Pod and an RDS
+  DBInstance in a kro ResourceGraphDefinition, showcasing the use of multiple resources
+  with dependencies.
diff --git a/website/versioned_docs/version-0.4.1/examples/aws/category.json b/website/versioned_docs/version-0.4.1/examples/aws/category.json
new file mode 100644
index 0000000..ce984a9
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/aws/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "AWS Examples",
+  "position": 300,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with AWS"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
diff --git a/website/versioned_docs/version-0.4.1/examples/aws/deploying-controller.md b/website/versioned_docs/version-0.4.1/examples/aws/deploying-controller.md
new file mode 100644
index 0000000..ddb999b
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/aws/deploying-controller.md
@@ -0,0 +1,297 @@
+---
+sidebar_position: 305
+---
+
+# Controller Deployment
+
+```yaml title="controller-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: ekscontrollers.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: EKSController
+    spec:
+      name: string | default=eks-controller
+      namespace: string | default=default
+      values:
+        aws:
+          accountID: string | required=true
+          region: string | default=us-west-2
+        deployment:
+          containerPort: integer | default=8080
+          replicas: integer | default=1
+        iamRole:
+          maxSessionDuration: integer | default=3600
+          oidcProvider: string | required=true
+          roleDescription: string | default=IRSA role for ACK EKS controller deployment on EKS cluster using kro Resource group
+        iamPolicy:
+          # would prefer to add a policyDocument here, need to support multiline string here
+          description: string | default="policy for eks controller"
+        image:
+          deletePolicy: string | default=delete
+          repository: string | default=public.ecr.aws/aws-controllers-k8s/eks-controller
+          tag: string | default=1.4.7
+          resources:
+            requests:
+              memory: string | default=64Mi
+              cpu: string | default=50m
+            limits:
+              memory: string | default=128Mi
+              cpu: string | default=100m
+        log:
+          enabled: boolean | default=false
+          level: string | default=info
+        serviceAccount:
+          name: string | default=eks-controller-sa
+  resources:
+  - id: eksCRDGroup
+    template:
+      apiVersion: kro.run/v1alpha1
+      kind: EKSCRDGroup
+      metadata:
+        name: ${schema.spec.name}-crd-group
+      spec:
+        name: ${schema.spec.name}-crd-group
+  - id: eksControllerIamPolicy
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Policy
+      metadata:
+        name: ${schema.spec.name}-iam-policy
+      spec:
+        name: ${schema.spec.name}-iam-policy
+        description: ${schema.spec.values.iamPolicy.description}
+        policyDocument: >
+          {
+            "Version": "2012-10-17",
+            "Statement": [
+              {
+                "Sid": "VisualEditor0",
+                "Effect": "Allow",
+                "Action": [
+                  "eks:*",
+                  "iam:GetRole",
+                  "iam:PassRole",
+                  "iam:ListAttachedRolePolicies",
+                  "ec2:DescribeSubnets"
+                ],
+                "Resource": "*"
+              }
+            ]
+          }
+  - id: eksControllerIamRole
+    template:
+      apiVersion: iam.services.k8s.aws/v1alpha1
+      kind: Role
+      metadata:
+        name: ${schema.spec.name}-iam-role
+        namespace: ${schema.spec.namespace}
+      spec:
+        name: ${schema.spec.name}-iam-role
+        description: ${schema.spec.values.iamRole.roleDescription}
+        maxSessionDuration: ${schema.spec.values.iamRole.maxSessionDuration}
+        policies:
+        - ${eksControllerIamPolicy.status.ackResourceMetadata.arn}
+        assumeRolePolicyDocument: >
+          {
+            "Version":"2012-10-17",
+            "Statement": [{
+              "Effect":"Allow",
+              "Principal": {"Federated": "arn:aws:iam::${schema.spec.values.aws.accountID}:oidc-provider/${schema.spec.values.iamRole.oidcProvider}"},
+              "Action": ["sts:AssumeRoleWithWebIdentity"],
+              "Condition": {
+                "StringEquals": {"${schema.spec.values.iamRole.oidcProvider}:sub": "system:serviceaccount:${schema.spec.namespace}:${schema.spec.values.serviceAccount.name}"}
+              }
+            }]
+          }
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.values.serviceAccount.name}
+        namespace: ${schema.spec.namespace}
+        annotations:
+          eks.amazonaws.com/role-arn : ${eksControllerIamRole.status.ackResourceMetadata.arn}
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        name: ${schema.spec.name}-deployment
+        namespace: ${schema.spec.namespace}
+        labels:
+          app.kubernetes.io.name: ${schema.spec.name}-deployment
+          app.kubernetes.io.instance: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels:
+            app.kubernetes.io.name: ${schema.spec.name}-deployment
+            app.kubernetes.io.instance: ${schema.spec.name}
+        template:
+          metadata:
+            labels:
+              app.kubernetes.io.name: ${schema.spec.name}-deployment
+              app.kubernetes.io.instance: ${schema.spec.name}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - command:
+              - ./bin/controller
+              args:
+              - --aws-region
+              - ${schema.spec.values.aws.region}
+              - --enable-development-logging=${schema.spec.values.log.enabled}
+              - --log-level
+              - ${schema.spec.values.log.level}
+              - --deletion-policy
+              - ${schema.spec.values.image.deletePolicy}
+              - --watch-namespace
+              - ${schema.spec.namespace}
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              name: controller
+              ports:
+                - name: http
+                  containerPort: ${schema.spec.values.deployment.containerPort}
+              resources:
+                requests:
+                  memory: ${schema.spec.values.image.resources.requests.memory}
+                  cpu: ${schema.spec.values.image.resources.requests.cpu}
+                limits:
+                    memory: ${schema.spec.values.image.resources.limits.memory}
+                    cpu: ${schema.spec.values.image.resources.limits.cpu}
+              env:
+              - name: ACK_SYSTEM_NAMESPACE
+                value: ${schema.spec.namespace}
+              - name: AWS_REGION
+                value: ${schema.spec.values.aws.region}
+              - name: DELETE_POLICY
+                value: ${schema.spec.values.image.deletePolicy}
+              - name: ACK_LOG_LEVEL
+                value: ${schema.spec.values.log.level}
+              ports:
+              - containerPort: 80
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}-clusterrolebinding
+      roleRef:
+        kind: ClusterRole
+        apiGroup: rbac.authorization.k8s.io
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}-clusterrole
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - configmaps
+        - secrets
+        verbs:
+        - get
+        - list
+        - patch
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - namespaces
+        verbs:
+        - get
+        - list
+        - watch
+      - apiGroups:
+        - ec2.services.k8s.aws
+        resources:
+        - securitygroups
+        - securitygroups/status
+        - subnets
+        - subnets/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries
+        - addons
+        - clusters
+        - fargateprofiles
+        - identityproviderconfigs
+        - nodegroups
+        - podidentityassociations
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - eks.services.k8s.aws
+        resources:
+        - accessentries/status
+        - addons/status
+        - clusters/status
+        - fargateprofiles/status
+        - identityproviderconfigs/status
+        - nodegroups/status
+        - podidentityassociations/status
+        verbs:
+        - get
+        - patch
+        - update
+      - apiGroups:
+        - iam.services.k8s.aws
+        resources:
+        - roles
+        - roles/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - kms.services.k8s.aws
+        resources:
+        - keys
+        - keys/status
+        verbs:
+        - get
+        - list
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources
+        - fieldexports
+        verbs:
+        - create
+        - delete
+        - get
+        - list
+        - patch
+        - update
+        - watch
+      - apiGroups:
+        - services.k8s.aws
+        resources:
+        - adoptedresources/status
+        - fieldexports/status
+        verbs:
+        - get
+        - patch
+        - update
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/aws/pod-rds-dbinstance.md b/website/versioned_docs/version-0.4.1/examples/aws/pod-rds-dbinstance.md
new file mode 100644
index 0000000..3b06711
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/aws/pod-rds-dbinstance.md
@@ -0,0 +1,50 @@
+---
+sidebar_position: 306
+---
+
+# Pod with RDS DBInstance
+
+```yaml title="deploymentdbinstance-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentandawspostgres
+spec:
+  # CRD Definition
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentAndAWSPostgres
+    spec:
+      applicationName: string
+      image: string
+      location: string
+
+  # Resources
+  resources:
+    - id: dbinstance
+      template:
+        apiVersion: rds.services.k8s.aws/v1alpha1
+        kind: DBInstance
+        metadata:
+          name: ${schema.spec.applicationName}-dbinstance
+        spec:
+          # need to specify the required fields (e.g masterUsername, masterPassword)
+          engine: postgres
+          dbInstanceIdentifier: ${schema.spec.applicationName}-dbinstance
+          allocatedStorage: 20
+          dbInstanceClass: db.t3.micro
+
+    - id: pod
+      template:
+        apiVersion: v1
+        kind: Pod
+        metadata:
+          name: ${schema.spec.applicationName}-pod
+        spec:
+          containers:
+            - name: container1
+              image: ${schema.spec.image}
+              env:
+                - name: POSTGRESS_ENDPOINT
+                  value: ${dbinstance.status.endpoint.address}
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/azure/category.json b/website/versioned_docs/version-0.4.1/examples/azure/category.json
new file mode 100644
index 0000000..2298240
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/azure/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Azure Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Microsoft Azure"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.4.1/examples/basic/category.json b/website/versioned_docs/version-0.4.1/examples/basic/category.json
new file mode 100644
index 0000000..0216728
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/basic/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Basic Examples",
+  "position": 100,
+  "link": {
+    "type": "generated-index",
+    "description": "Basic examples to get started with Kro"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.4.1/examples/basic/noop.md b/website/versioned_docs/version-0.4.1/examples/basic/noop.md
new file mode 100644
index 0000000..3258bcb
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/basic/noop.md
@@ -0,0 +1,19 @@
+---
+sidebar_position: 101
+---
+
+# Empty ResourceGraphDefinition
+
+```yaml title="noop.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: noop
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: NoOp
+    spec:
+      name: string | required=true
+  resources: []
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/basic/optionals.md b/website/versioned_docs/version-0.4.1/examples/basic/optionals.md
new file mode 100644
index 0000000..6730636
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/basic/optionals.md
@@ -0,0 +1,60 @@
+---
+sidebar_position: 104
+---
+
+# Optional Values & External References
+
+
+```yaml title="config-map.yaml"
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: demo
+data:
+  ECHO_VALUE: "Hello, World!"
+```
+
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentservice
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentService
+    spec:
+      name: string
+  resources:
+    - id: input
+      externalRef:
+        apiVersion: v1
+        kind: ConfigMap
+        metadata:
+          name: demo
+          namespace: default
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-busybox
+                  image: busybox
+                  command: ["sh", "-c", "echo $MY_VALUE && sleep 3600"]
+                  env:
+                    - name: MY_VALUE
+                      value: ${input.data.?ECHO_VALUE}
+```
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.4.1/examples/basic/web-app-ingress.md b/website/versioned_docs/version-0.4.1/examples/basic/web-app-ingress.md
new file mode 100644
index 0000000..2767fca
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/basic/web-app-ingress.md
@@ -0,0 +1,92 @@
+---
+sidebar_position: 102
+---
+
+# Web Application w/ Ingress
+
+```yaml title="webapp-ingress.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: my-application
+spec:
+  # kro uses this simple schema to create your CRD schema and apply it
+  # The schema defines what users can provide when they instantiate the RGD (create an instance).
+  schema:
+    apiVersion: v1alpha1
+    kind: Application
+    spec:
+      # Spec fields that users can provide.
+      name: string
+      image: string | default="nginx"
+      ingress:
+        enabled: boolean | default=false
+    status:
+      # Fields the controller will inject into instances status.
+      deploymentConditions: ${deployment.status.conditions}
+      availableReplicas: ${deployment.status.availableReplicas}
+
+  # Define the resources this API will manage.
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name} # Use the name provided by user
+        spec:
+          replicas: 3
+          selector:
+            matchLabels:
+              app: ${schema.spec.name}
+          template:
+            metadata:
+              labels:
+                app: ${schema.spec.name}
+            spec:
+              containers:
+                - name: ${schema.spec.name}
+                  image: ${schema.spec.image} # Use the image provided by user
+                  ports:
+                    - containerPort: 80
+
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}-service
+        spec:
+          selector: ${deployment.spec.selector.matchLabels} # Use the deployment selector
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+
+    - id: ingress
+      includeWhen:
+        - ${schema.spec.ingress.enabled} # Only include if the user wants to create an Ingress
+      template:
+        apiVersion: networking.k8s.io/v1
+        kind: Ingress
+        metadata:
+          name: ${schema.spec.name}-ingress
+          annotations:
+            kubernetes.io/ingress.class: alb
+            alb.ingress.kubernetes.io/scheme: internet-facing
+            alb.ingress.kubernetes.io/target-type: ip
+            alb.ingress.kubernetes.io/healthcheck-path: /health
+            alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
+            alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=60
+        spec:
+          rules:
+            - http:
+                paths:
+                  - path: "/"
+                    pathType: Prefix
+                    backend:
+                      service:
+                        name: ${service.metadata.name} # Use the service name
+                        port:
+                          number: 80
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/basic/web-app.md b/website/versioned_docs/version-0.4.1/examples/basic/web-app.md
new file mode 100644
index 0000000..6619310
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/basic/web-app.md
@@ -0,0 +1,53 @@
+---
+sidebar_position: 103
+---
+
+# Web Application
+
+```yaml title="deploymentservice-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: deploymentservice
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: DeploymentService
+    spec:
+      name: string
+  resources:
+    - id: deployment
+      template:
+        apiVersion: apps/v1
+        kind: Deployment
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          replicas: 1
+          selector:
+            matchLabels:
+              app: deployment
+          template:
+            metadata:
+              labels:
+                app: deployment
+            spec:
+              containers:
+                - name: ${schema.spec.name}-deployment
+                  image: nginx
+                  ports:
+                    - containerPort: 80
+    - id: service
+      template:
+        apiVersion: v1
+        kind: Service
+        metadata:
+          name: ${schema.spec.name}
+        spec:
+          selector:
+            app: deployment
+          ports:
+            - protocol: TCP
+              port: 80
+              targetPort: 80
+```
diff --git a/website/versioned_docs/version-0.4.1/examples/examples.md b/website/versioned_docs/version-0.4.1/examples/examples.md
new file mode 100644
index 0000000..e1dcadc
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/examples.md
@@ -0,0 +1,29 @@
+---
+sidebar_position: 0
+---
+
+# Examples
+
+This section provides a collection of examples demonstrating how to define and
+use ResourceGraphDefinitions in **kro** for various scenarios. Each example showcases a
+specific use case and includes a detailed explanation along with the
+corresponding YAML definitions.
+
+## Basic Examples
+
+- [Empty ResourceGraphDefinition (Noop)](./basic/noop.md) Explore the simplest form of a
+  ResourceGraphDefinition that doesn't define any resources, serving as a reference for
+  the basic structure.
+
+- [Simple Web Application](./basic/web-app.md) Deploy a basic web application with a
+  Deployment and Service.
+
+- [Web Application with Ingress](./basic/web-app-ingress.md) Extend the basic web
+  application example to include an optional Ingress resource for external
+  access.
+
+## Advanced Examples
+
+- [Deploying CoreDNS](./kubernetes/deploying-coredns.md) Learn how to deploy CoreDNS in a
+  Kubernetes cluster using kro ResourceGraphDefinitions, including the necessary
+  Deployment, Service, and ConfigMap.
diff --git a/website/versioned_docs/version-0.4.1/examples/gcp/category.json b/website/versioned_docs/version-0.4.1/examples/gcp/category.json
new file mode 100644
index 0000000..4277df4
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/gcp/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "GCP Examples",
+  "position": 400,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Google Cloud Platform"
+  },
+  "collapsible": true,
+  "collapsed": true
+} 
\ No newline at end of file
diff --git a/website/versioned_docs/version-0.4.1/examples/gcp/cloud-sql.md b/website/versioned_docs/version-0.4.1/examples/gcp/cloud-sql.md
new file mode 100644
index 0000000..c3eb689
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/gcp/cloud-sql.md
@@ -0,0 +1,274 @@
+---
+sidebar_position: 406
+---
+
+# CloudSQL
+
+This example show how you can use KRO to deploy GCP Cloud SQL instance in 2 regions as a primary and replica instances.
+
+
+## End User: CloudSQL
+The administrator needs to install the RGD first.
+The end user creates a `CloudSQL` resource that looks like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: CloudSQL
+metadata:
+  name: demo
+  namespace: config-connector
+spec:
+  name: demo
+  project: my-gcp-project
+  primaryRegion: us-central1
+  replicaRegion: us-west1
+```
+
+The status of the applied resource can be checked using:
+
+```
+kubectl get cloudsqls
+kubectl get cloudsql demo -n config-connector -o yaml
+```
+
+Navigate to CloudSQL page in the GCP Console and verify the creation of primary and replica instances.
+
+Once done, the user can delete the `CloudSQL` instance:
+
+```
+kubectl delete cloudsql demo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+> kubectl get rgd cloudsql.kro.run
+NAME               APIVERSION   KIND       STATE    AGE
+cloudsql.kro.run   v1alpha1     CloudSQL   Active   44m
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: cloudsql.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CloudSQL
+    spec:
+      name: string
+      project: string
+      primaryRegion: string
+      replicaRegion: string
+    status:
+      connectionName: ${sqlPrimary.status.connectionName}
+      ipAddress: ${sqlPrimary.status.firstIpAddress}
+  resources:
+  - id: cloudkmsEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: cloudkms-enablement
+      spec:
+        resourceID: cloudkms.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: serviceUsageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: serviceusage-enablement
+      spec:
+        resourceID: serviceusage.googleapis.com
+  - id: sqlAdminEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: sqladmin-enablement
+      spec:
+        resourceID: sqladmin.googleapis.com
+  - id: serviceidentity
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: ServiceIdentity
+      metadata:
+        labels:
+          enabled-service: ${serviceUsageEnable.metadata.name}
+        name: sqladmin.googleapis.com
+      spec:
+        projectRef:
+          external: ${schema.spec.project}
+  - id: keyringPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        location: ${schema.spec.primaryRegion}
+  - id: keyringReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        location: ${schema.spec.replicaRegion}
+  - id: kmskeyPrimary
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.primaryRegion}
+        name: ${schema.spec.name}-primary
+      spec:
+        keyRingRef:
+          name: ${keyringPrimary.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: kmskeyReplica
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          enabled-service: ${cloudkmsEnable.metadata.name}
+          failure-zone: ${schema.spec.replicaRegion}
+        name: ${schema.spec.name}-replica
+      spec:
+        keyRingRef:
+          name: ${keyringReplica.metadata.name}
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        purpose: ENCRYPT_DECRYPT
+        versionTemplate:
+          algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: iampolicymemberPrimary
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: sql-kms-${schema.spec.primaryRegion}-policybinding
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyPrimary.metadata.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: iampolicymemberReplica
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        name: sql-kms-${schema.spec.replicaRegion}-policybinding
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+      spec:
+        member: serviceAccount:${serviceidentity.status.email}
+        role: roles/cloudkms.cryptoKeyEncrypterDecrypter
+        resourceRef:
+          kind: KMSCryptoKey
+          name: ${kmskeyReplica.metadata.name}-replica
+          #namespace: {{ cloudsqls.metadata.namespace }}
+  - id: sqlPrimary
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.primaryRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-primary
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.primaryRegion}/keyRings/${keyringPrimary.metadata.name}/cryptoKeys/${kmskeyPrimary.metadata.name}
+        region: ${schema.spec.primaryRegion}
+        settings:
+          availabilityType: REGIONAL
+          backupConfiguration:
+            backupRetentionSettings:
+              retainedBackups: 6
+            enabled: true
+            location: us
+          diskSize: 50
+          diskType: PD_SSD
+          maintenanceWindow:
+            day: 7
+            hour: 3
+          tier: db-custom-8-30720
+  - id: sqlReplica
+    template:
+      apiVersion: sql.cnrm.cloud.google.com/v1beta1
+      kind: SQLInstance
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: abandon
+        labels:
+          failure-zone: ${schema.spec.replicaRegion}
+          enabled-service: ${sqlAdminEnable.metadata.name}
+        name: ${schema.spec.name}-replica
+      spec:
+        databaseVersion: POSTGRES_13
+        encryptionKMSCryptoKeyRef:
+          external: projects/${schema.spec.project}/locations/${schema.spec.replicaRegion}/keyRings/${keyringReplica.metadata.name}/cryptoKeys/${kmskeyReplica.metadata.name}
+        masterInstanceRef:
+          name: ${schema.spec.name}-primary
+          #namespace: {{ cloudsqls.metadata.namespace }}
+        region: ${schema.spec.replicaRegion}
+        settings:
+          availabilityType: REGIONAL
+          diskSize: 50
+          diskType: PD_SSD
+          tier: db-custom-8-30720
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.4.1/examples/gcp/eventarc.md b/website/versioned_docs/version-0.4.1/examples/gcp/eventarc.md
new file mode 100644
index 0000000..5ff9517
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/gcp/eventarc.md
@@ -0,0 +1,273 @@
+---
+sidebar_position: 407
+---
+
+# GCSBucketWithFinalizerTrigger
+
+A **Platform Administrator** wants to give end users in their organization self-service access to creating GCS Buckets that triggers a Cloud Workflow when any object in it is finalized. The platform administrator creates a kro ResourceGraphDefinition called *gcsbucketwithfinalizertrigger.kro.run* that defines the required Kubernetes resources and a CRD called *GCSBucketWithFinalizertrigger* that exposes only the options they want to be configurable by end users.
+
+The following KCC objects are created by this RGD:
+* IAMServiceAccount, IAMPolicyMember: Service Account with necessary permissions for Eventarc and Pub/Sub.
+* StorageBucket
+* PubSubTopic
+* EventArcTrigger
+* StorageNotification: To publish events from the GCS bucket to a Pub/Sub topic.
+
+Pre-requisites:
+* Workflow: The workflow to be triggered on Finalizer event.
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GCS EventArc Stack](gcsbucket-with-finalizer-trigger.png)
+
+<!--
+meta {
+  title "GCS Bucket Finalizer Event Processing"
+}
+
+elements {
+  gcp {
+      card iam {
+         name "EventArc, Workflow"
+      }
+      group  storageA {
+        name ""
+        card gcs {
+        name "bucket"
+        }
+        card pubsub {
+        name "finalizer topic"
+        }
+        card eventarc {
+        name "trigger"
+        }
+        card workflows {
+        name "finalizer workflow"
+        }
+      }
+  }
+}
+
+paths {
+  gcs \-\-> pubsub
+  pubsub \-\-> eventarc
+  eventarc \-\-> workflows
+}
+-->
+
+
+
+## End User: GCSBucketWithFinalizerTrigger
+
+The administrator needs to install the RGD first.
+The end user creates a `GCSBucketWithFinalizerTrigger` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GCSBucketWithFinalizerTrigger
+metadata:
+  name: gcsevent-test
+  namespace: config-connector
+spec:
+  name: demo-gcs               # used as name or prefix for KCC objects
+  workflowName: gcs-finalizer-workflow   # Replace with your workflow path
+  location: us-central1        # desired location
+  project: my-project-name     # Replace with your project name
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gcsbucketwithfinalizertrigger -n config-connector
+kubectl get gcsbucketwithfinalizertrigger gcsevent-test -n config-connector -o yaml
+```
+
+Navigate to GCS page in the GCP Console and verify the bucket creation. Also verify that the Triggers are setup correctly in the EventArc page.
+
+Once done, the user can delete the `GCSBucketWithFinalizerTrigger` instance:
+
+```
+kubectl delete gcsbucketwithfinalizertrigger gcsevent-test -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gcsbucketwithfinalizertrigger.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gcsbucketwithfinalizertrigger.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GCSBucketWithFinalizerTrigger
+    spec:
+      name: string
+      workflowName: string
+      location: string
+      project: string
+    status:
+      url: ${bucket.status.url}
+  resources:
+  - id: storageEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: storage-enablement
+      spec:
+        resourceID: storage.googleapis.com
+  - id: iamEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: iam-enablement
+      spec:
+        resourceID: iam.googleapis.com
+  - id: pubsubEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: pubsub-enablement
+      spec:
+        resourceID: pubsub.googleapis.com
+  - id: eventarcEnable
+    template:
+      apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
+      kind: Service
+      metadata:
+        annotations:
+          cnrm.cloud.google.com/deletion-policy: "abandon"
+          cnrm.cloud.google.com/disable-dependent-services: "false"
+        name: eventarc-enablement
+      spec:
+        resourceID: eventarc.googleapis.com
+  - id: iamsa
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMServiceAccount
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        #annotations:
+        #  cnrm.cloud.google.com/project-id: ${schema.spec.project}
+        name: ${schema.spec.name}
+      spec:
+        displayName: ${schema.spec.name}-eventarc-workflow
+  - id: iampmEventarc
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-eventarc
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/eventarc.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: iampmWorkflow
+    template:
+      apiVersion: iam.cnrm.cloud.google.com/v1beta1
+      kind: IAMPolicyMember
+      metadata:
+        labels:
+          enabled-service: ${iamEnable.metadata.name}
+        name: ${schema.spec.name}-workflow
+      spec:
+        memberFrom:
+          serviceAccountRef:
+            name: ${iamsa.metadata.name}
+        role: roles/workflows.admin
+        resourceRef:
+          kind: Project
+          external: ${schema.spec.project}
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          enabled-service: ${pubsubEnable.metadata.name}
+        name: ${schema.spec.name}-gcs-finalizer-topic
+  - id: bucket
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageBucket
+      metadata:
+        labels:
+          enabled-service: ${storageEnable.metadata.name}
+        name: ${schema.spec.name}-${schema.spec.project}
+      spec:
+        uniformBucketLevelAccess: true
+  - id: eventTrigger
+    template:
+      apiVersion: eventarc.cnrm.cloud.google.com/v1beta1
+      kind: EventarcTrigger
+      metadata:
+        labels:
+          enabled-service: ${eventarcEnable.metadata.name}
+        name: ${schema.spec.name}-gcsfinalizer
+      spec:
+        destination:
+          workflowRef:
+            external: "projects/${schema.spec.project}/locations/${schema.spec.location}/workflows/${schema.spec.workflowName}"
+        location: ${schema.spec.location}
+        serviceAccountRef:
+          name: ${iamsa.metadata.name}
+        transport:
+          pubsub:
+            topicRef:
+              name: ${topic.metadata.name}
+              namespace: config-connector
+        matchingCriteria:
+        - attribute: "type"
+          value: "google.cloud.pubsub.topic.v1.messagePublished"
+        projectRef:
+          external: "projects/${schema.spec.project}"
+  - id: storageNotification
+    template:
+      apiVersion: storage.cnrm.cloud.google.com/v1beta1
+      kind: StorageNotification
+      metadata:
+        name: ${schema.spec.name}-gcs
+      spec:
+        bucketRef:
+          name: ${bucket.metadata.name}
+        topicRef:
+          name: ${topic.metadata.name}
+        eventTypes:
+        - "OBJECT_FINALIZE"
+        payloadFormat: JSON_API_V1
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.4.1/examples/gcp/gcsbucket-with-finalizer-trigger.png b/website/versioned_docs/version-0.4.1/examples/gcp/gcsbucket-with-finalizer-trigger.png
new file mode 100644
index 0000000..8bfdd20
Binary files /dev/null and b/website/versioned_docs/version-0.4.1/examples/gcp/gcsbucket-with-finalizer-trigger.png differ
diff --git a/website/versioned_docs/version-0.4.1/examples/gcp/gke-cluster.md b/website/versioned_docs/version-0.4.1/examples/gcp/gke-cluster.md
new file mode 100644
index 0000000..6b4cbd3
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/gcp/gke-cluster.md
@@ -0,0 +1,233 @@
+---
+sidebar_position: 405
+---
+
+# GKECluster
+
+A **Platform Administrator** wants to give end users in their organization self-service access to create GKE clusters. The platform administrator creates a kro ResourceGraphDefinition called *gkecluster.kro.run* that defines the required Kubernetes resources and a CRD called *GKEcluster* that exposes only the options they want to be configurable by end users. The ResourceGraphDefinition would define the following resources (using [KCC](https://github.com/GoogleCloudPlatform/k8s-config-connector) to provide the mappings from K8s CRDs to Google Cloud APIs):
+
+* GKE cluster
+* Container Node Pool
+* Network
+* Subnetwork
+* KMSKeyRing   - Encrypt BootDisk
+* KMSCryptoKey - Encrypt BootDisk
+
+Everything related to these resources would be hidden from the end user, simplifying their experience.  
+
+![GKE Cluster Stack](gke-cluster.png)
+
+## End User: GKECluster
+
+The administrator needs to install the RGD first.
+The end user creates a `GKECluster` resource something like this:
+
+```yaml
+apiVersion: kro.run/v1alpha1
+kind: GKECluster
+metadata:
+  name: krodemo
+  namespace: config-connector
+spec:
+  name: krodemo         # Name used for all resources created as part of this RGD
+  location: us-central1 # Region where the GCP resources are created
+  maxnodes: 4           # Max scaling limit for the nodes in the new nodepool
+```
+
+They can then check the status of the applied resource:
+
+```
+kubectl get gkeclusters
+kubectl get gkeclusters krodemo -n config-connector -o yaml
+```
+
+Navigate to GKE Cluster page in the GCP Console and verify the cluster creation.
+
+Once done, the user can delete the `GKECluster` instance:
+
+```
+kubectl delete gkecluster krodemo -n config-connector
+```
+
+## Administrator: ResourceGraphDefinition
+The administrator needs to install the RGD in the cluster first before the user can consume it:
+
+```
+kubectl apply -f rgd.yaml
+```
+
+Validate the RGD is installed correctly:
+
+```
+kubectl get rgd gkecluster.kro.run
+```
+
+Once all user created instances are deleted, the administrator can choose to deleted the RGD.
+
+<details>
+  <summary>ResourceGraphDefinition</summary>
+  ```yaml title="rgd.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: gkecluster.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: GKECluster
+    spec:
+      name: string
+      nodepool: string
+      maxnodes: integer
+      location: string
+    status:
+      masterVersion: ${cluster.status.masterVersion}
+  resources:
+  - id: network
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeNetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${schema.spec.name}
+      spec:
+        #routingMode: GLOBAL
+        #deleteDefaultRoutesOnCreate: false
+        routingMode: REGIONAL
+        autoCreateSubnetworks: false
+  - id: subnet
+    template:
+      apiVersion: compute.cnrm.cloud.google.com/v1beta1
+      kind: ComputeSubnetwork
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${network.metadata.name}
+      spec:
+        ipCidrRange: 10.2.0.0/16
+        #ipCidrRange: 10.10.90.0/24
+        region: ${schema.spec.location}
+        networkRef:
+          name: ${schema.spec.name}
+        #privateIpGoogleAccess: true
+  - id: topic
+    template:
+      apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
+      kind: PubSubTopic
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${subnet.metadata.name}
+  - id: keyring
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSKeyRing
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${topic.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+  - id: key
+    template:
+      apiVersion: kms.cnrm.cloud.google.com/v1beta1
+      kind: KMSCryptoKey
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${keyring.metadata.name}
+      spec:
+        keyRingRef:
+          name: ${schema.spec.name}
+        purpose: ASYMMETRIC_SIGN
+        versionTemplate:
+          algorithm: EC_SIGN_P384_SHA384
+          protectionLevel: SOFTWARE
+        importOnly: false
+  - id: nodepool
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerNodePool
+      metadata:
+        labels:
+          source: "gkecluster"
+        name: ${cluster.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        autoscaling:
+          minNodeCount: 1
+          maxNodeCount: ${schema.spec.maxnodes}
+        nodeConfig:
+          machineType: n1-standard-1
+          diskSizeGb: 100
+          diskType: pd-standard
+          #taint:
+          #- effect: NO_SCHEDULE
+          #  key: originalKey
+          #  value: originalValue
+        clusterRef:
+          name: ${schema.spec.name}
+  - id: cluster
+    template:
+      apiVersion: container.cnrm.cloud.google.com/v1beta1
+      kind: ContainerCluster
+      metadata:
+        #annotations:
+        #  cnrm.cloud.google.com/remove-default-node-pool: "false"
+        labels:
+          source: "gkecluster"
+        name: ${key.metadata.name}
+      spec:
+        location: ${schema.spec.location}
+        initialNodeCount: 1
+        networkRef:
+          name: ${schema.spec.name}
+        subnetworkRef:
+          name: ${schema.spec.name}
+        ipAllocationPolicy:
+          clusterIpv4CidrBlock: /20
+          servicesIpv4CidrBlock: /20
+        #masterAuth:
+        #  clientCertificateConfig:
+        #    issueClientCertificate: false
+        #workloadIdentityConfig:
+        #  # Workload Identity supports only a single namespace based on your project name.
+        #  # Replace ${PROJECT_ID?} below with your project ID.
+        #  workloadPool: ${PROJECT_ID?}.svc.id.goog      
+        notificationConfig:
+          pubsub:
+            enabled: true
+            topicRef:
+              name: ${schema.spec.name}
+        loggingConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "WORKLOADS"
+        monitoringConfig:
+          enableComponents:
+            - "SYSTEM_COMPONENTS"
+            - "APISERVER"
+          managedPrometheus:
+            enabled: true
+        clusterAutoscaling:
+          enabled: true
+          autoscalingProfile: BALANCED
+          resourceLimits:
+            - resourceType: cpu
+              maximum: 100
+              minimum: 10
+            - resourceType: memory
+              maximum: 1000
+              minimum: 100
+          autoProvisioningDefaults:
+            bootDiskKMSKeyRef:
+              name: ${schema.spec.name}
+        nodeConfig:
+          linuxNodeConfig:
+            sysctls:
+              net.core.somaxconn: "4096"
+            cgroupMode: "CGROUP_MODE_UNSPECIFIED"
+      
+  ```
+</details>
diff --git a/website/versioned_docs/version-0.4.1/examples/gcp/gke-cluster.png b/website/versioned_docs/version-0.4.1/examples/gcp/gke-cluster.png
new file mode 100644
index 0000000..37eaf08
Binary files /dev/null and b/website/versioned_docs/version-0.4.1/examples/gcp/gke-cluster.png differ
diff --git a/website/versioned_docs/version-0.4.1/examples/kubernetes/category.json b/website/versioned_docs/version-0.4.1/examples/kubernetes/category.json
new file mode 100644
index 0000000..d17bd0a
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/kubernetes/category.json
@@ -0,0 +1,10 @@
+{
+  "label": "Kubernetes Examples",
+  "position": 500,
+  "link": {
+    "type": "generated-index",
+    "description": "Examples of using Kro with Kubernetes"
+  },
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/website/versioned_docs/version-0.4.1/examples/kubernetes/deploying-coredns.md b/website/versioned_docs/version-0.4.1/examples/kubernetes/deploying-coredns.md
new file mode 100644
index 0000000..d10d654
--- /dev/null
+++ b/website/versioned_docs/version-0.4.1/examples/kubernetes/deploying-coredns.md
@@ -0,0 +1,189 @@
+---
+sidebar_position: 10
+---
+
+# CoreDNS Deployment
+
+```yaml title="coredns-rg.yaml"
+apiVersion: kro.run/v1alpha1
+kind: ResourceGraphDefinition
+metadata:
+  name: coredns.kro.run
+spec:
+  schema:
+    apiVersion: v1alpha1
+    kind: CoreDNSDeployment
+    spec:
+      name: string | default=mycoredns
+      namespace: string | default=default
+      values:
+        clusterRole:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/bootstrapping": "rbac-defaults"}'
+        clusterRoleBinding:
+          annotations: 'map[string]string | default={"rbac.authorization.kubernetes.io/autoupdate": "\"true\""}'
+        configMap:
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns"}'
+        deployment:
+          annotations: 'map[string]string | default={"deployment.kubernetes.io/revision": "\"1\""}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "coredns", "k8s-app": "kube-dns", "kubernetes.io/name": "CoreDNS"}'
+          replicas: integer | default=2
+        image:
+          repository: string | default=coredns/coredns
+          tag: string | default=1.11.3
+        resources:
+          limits:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+          requests:
+            cpu: string | default=100m
+            memory: string | default=128Mi
+        service:
+          annotations: 'map[string]string | default={"prometheus.io/port": "9153", "prometheus.io/scrape": "true"}'
+          labels: 'map[string]string | default={"eks.amazonaws.com/component": "kube-dns", "k8s-app": "kube-dns", "kubernetes.io/cluster-service": "true", "kubernetes.io/name": "CoreDNS"}'
+          clusterIP: string | default=10.100.123.45
+          clusterIPs: '[]string | default=["10.100.123.45"]'
+          ipFamilies: '[]string | default=["IPv4"]'
+          type: string | default=ClusterIP
+        serviceAccount:
+          secrets: 'map[string]string | default={"name": "coredns-token-pvcnf"}'
+  resources:
+  - id: clusterRole
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRole
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+      rules:
+      - apiGroups:
+        - ""
+        resources:
+        - endpoints
+        - services
+        - pods
+        - namespaces
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - discovery.k8s.io
+        resources:
+        - endpointslices
+        verbs:
+        - list
+        - watch
+      - apiGroups:
+        - ""
+        resources:
+        - nodes
+        verbs:
+        - get
+  - id: clusterRoleBinding
+    template:
+      apiVersion: rbac.authorization.k8s.io/v1
+      kind: ClusterRoleBinding
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.clusterRole.labels}
+        annotations: ${schema.spec.values.clusterRoleBinding.annotations}
+      roleRef:
+        apiGroup: rbac.authorization.k8s.io
+        kind: ClusterRole
+        name: ${clusterRole.metadata.name}
+      subjects:
+      - kind: ServiceAccount
+        name: ${serviceAccount.metadata.name}
+        namespace: ${serviceAccount.metadata.namespace}
+  - id: configMap
+    template:
+      apiVersion: v1
+      kind: ConfigMap
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.configMap.labels}
+      data:
+        Corefile: |-
+          .:53 {
+              errors
+              health
+              kubernetes cluster.local in-addr.arpa ip6.arpa {
+                pods insecure
+                fallthrough in-addr.arpa ip6.arpa
+              }
+              prometheus :9153
+              forward . /etc/resolv.conf
+              cache 30
+              loop
+              reload
+              loadbalance
+          }
+  - id: deployment
+    template:
+      apiVersion: apps/v1
+      kind: Deployment
+      metadata:
+        annotations: ${schema.spec.values.deployment.annotations}
+        labels: ${schema.spec.values.deployment.labels}
+        name: ${schema.spec.name}
+      spec:
+        replicas: ${schema.spec.values.deployment.replicas}
+        selector:
+          matchLabels: ${schema.spec.values.configMap.labels}
+        template:
+          metadata:
+            labels: ${schema.spec.values.configMap.labels}
+          spec:
+            serviceAccountName: ${serviceAccount.metadata.name}
+            containers:
+            - name: "coredns"
+              image: ${schema.spec.values.image.repository}:${schema.spec.values.image.tag}
+              args: ["-conf", "/etc/coredns/Corefile"]
+              resources: ${schema.spec.values.resources}
+              volumeMounts:
+              - name: config-volume
+                mountPath: /etc/coredns
+            volumes:
+              - name: config-volume
+                configMap:
+                  name: ${schema.spec.name}
+                  items:
+                  - key: Corefile
+                    path: Corefile
+  - id: service
+    template:
+      apiVersion: v1
+      kind: Service
+      metadata:
+        name: ${schema.spec.name}
+        labels: ${schema.spec.values.service.labels}
+        annotations: ${schema.spec.values.service.annotations}
+      spec:
+        selector:
+          k8s-app: kube-dns
+        clusterIP: ${schema.spec.values.service.clusterIP}
+        clusterIPs: ${schema.spec.values.service.clusterIPs}
+        internalTrafficPolicy: Cluster
+        ipFamilies: ${schema.spec.values.service.ipFamilies}
+        ports:
+        - name: dns
+          port: 53
+          protocol: UDP
+          targetPort: 53
+        - name: dns-tcp
+          port: 53
+          protocol: TCP
+          targetPort: 53
+        selector:
+         k8s-app: kube-dns
+        sessionAffinity: None
+  - id: serviceAccount
+    template:
+      apiVersion: v1
+      kind: ServiceAccount
+      metadata:
+        name: ${schema.spec.name}
+        namespace: ${schema.spec.namespace}
+        labels: ${schema.spec.values.configMap.labels}
+      secrets:
+      - ${schema.spec.values.serviceAccount.secrets}
+```
diff --git a/website/versioned_sidebars/version-0.1.0-sidebars.json b/website/versioned_sidebars/version-0.1.0-sidebars.json
new file mode 100644
index 0000000..21abb2f
--- /dev/null
+++ b/website/versioned_sidebars/version-0.1.0-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "examplesSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "examples"
+    }
+  ],
+  "apisSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "api"
+    }
+  ]
+}
diff --git a/website/versioned_sidebars/version-0.2.0-sidebars.json b/website/versioned_sidebars/version-0.2.0-sidebars.json
new file mode 100644
index 0000000..21abb2f
--- /dev/null
+++ b/website/versioned_sidebars/version-0.2.0-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "examplesSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "examples"
+    }
+  ],
+  "apisSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "api"
+    }
+  ]
+}
diff --git a/website/versioned_sidebars/version-0.2.1-sidebars.json b/website/versioned_sidebars/version-0.2.1-sidebars.json
new file mode 100644
index 0000000..21abb2f
--- /dev/null
+++ b/website/versioned_sidebars/version-0.2.1-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "examplesSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "examples"
+    }
+  ],
+  "apisSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "api"
+    }
+  ]
+}
diff --git a/website/versioned_sidebars/version-0.2.2-sidebars.json b/website/versioned_sidebars/version-0.2.2-sidebars.json
new file mode 100644
index 0000000..21abb2f
--- /dev/null
+++ b/website/versioned_sidebars/version-0.2.2-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "examplesSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "examples"
+    }
+  ],
+  "apisSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "api"
+    }
+  ]
+}
diff --git a/website/versioned_sidebars/version-0.3.0-sidebars.json b/website/versioned_sidebars/version-0.3.0-sidebars.json
new file mode 100644
index 0000000..21abb2f
--- /dev/null
+++ b/website/versioned_sidebars/version-0.3.0-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "examplesSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "examples"
+    }
+  ],
+  "apisSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "api"
+    }
+  ]
+}
diff --git a/website/versioned_sidebars/version-0.4.0-sidebars.json b/website/versioned_sidebars/version-0.4.0-sidebars.json
new file mode 100644
index 0000000..21abb2f
--- /dev/null
+++ b/website/versioned_sidebars/version-0.4.0-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "examplesSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "examples"
+    }
+  ],
+  "apisSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "api"
+    }
+  ]
+}
diff --git a/website/versioned_sidebars/version-0.4.1-sidebars.json b/website/versioned_sidebars/version-0.4.1-sidebars.json
new file mode 100644
index 0000000..21abb2f
--- /dev/null
+++ b/website/versioned_sidebars/version-0.4.1-sidebars.json
@@ -0,0 +1,20 @@
+{
+  "docsSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "docs"
+    }
+  ],
+  "examplesSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "examples"
+    }
+  ],
+  "apisSidebar": [
+    {
+      "type": "autogenerated",
+      "dirName": "api"
+    }
+  ]
+}
diff --git a/website/versions.json b/website/versions.json
index fe51488..db3758f 100644
--- a/website/versions.json
+++ b/website/versions.json
@@ -1 +1 @@
-[]
+["0.4.1", "0.4.0", "0.3.0", "0.2.2", "0.2.1", "0.2.0", "0.1.0"]



Test patch:
diff --git a/pkg/client/crd_test.go b/pkg/client/crd_test.go
new file mode 100644
index 0000000..7f8a328
--- /dev/null
+++ b/pkg/client/crd_test.go
@@ -0,0 +1,148 @@
+// Copyright 2025 The Kube Resource Orchestrator Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package client
+
+import (
+	"testing"
+
+	v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+	"github.com/kubernetes-sigs/kro/pkg/metadata"
+	"github.com/stretchr/testify/assert"
+)
+
+func TestCRDWrapper_verifyNoConflict(t *testing.T) {
+	tests := []struct {
+		name        string
+		existingCRD *v1.CustomResourceDefinition
+		newCRD      v1.CustomResourceDefinition
+		wantErr     bool
+		errMsg      string
+	}{
+		{
+			name: "successful verification - same owner",
+			existingCRD: &v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.OwnedLabel:                       "true",
+						metadata.ResourceGraphDefinitionNameLabel: "test-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "test-id",
+					},
+				},
+			},
+			newCRD: v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.OwnedLabel:                       "true",
+						metadata.ResourceGraphDefinitionNameLabel: "test-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "test-id",
+					},
+				},
+			},
+			wantErr: false,
+		},
+		{
+			name: "conflict - not owned by KRO",
+			existingCRD: &v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.ResourceGraphDefinitionNameLabel: "test-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "test-id",
+					},
+				},
+			},
+			newCRD: v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.OwnedLabel:                       "true",
+						metadata.ResourceGraphDefinitionNameLabel: "test-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "test-id",
+					},
+				},
+			},
+			wantErr: true,
+			errMsg:  "conflict detected: CRD test.crd already exists and is not owned by KRO",
+		},
+		{
+			name: "conflict - different RGD name",
+			existingCRD: &v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.OwnedLabel:                       "true",
+						metadata.ResourceGraphDefinitionNameLabel: "existing-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "test-id",
+					},
+				},
+			},
+			newCRD: v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.OwnedLabel:                       "true",
+						metadata.ResourceGraphDefinitionNameLabel: "new-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "test-id",
+					},
+				},
+			},
+			wantErr: true,
+			errMsg:  "conflict detected: CRD test.crd has ownership by another ResourceGraphDefinition",
+		},
+		{
+			name: "conflict - different RGD ID",
+			existingCRD: &v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.OwnedLabel:                       "true",
+						metadata.ResourceGraphDefinitionNameLabel: "test-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "existing-id",
+					},
+				},
+			},
+			newCRD: v1.CustomResourceDefinition{
+				ObjectMeta: metav1.ObjectMeta{
+					Name: "test.crd",
+					Labels: map[string]string{
+						metadata.OwnedLabel:                       "true",
+						metadata.ResourceGraphDefinitionNameLabel: "test-rgd",
+						metadata.ResourceGraphDefinitionIDLabel:   "new-id",
+					},
+				},
+			},
+			wantErr: true,
+			errMsg:  "conflict detected: CRD test.crd has ownership by another ResourceGraphDefinition",
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			w := &CRDWrapper{}
+			err := w.verifyOwnership(tt.existingCRD, tt.newCRD)
+
+			if tt.wantErr {
+				assert.Error(t, err)
+				assert.Equal(t, tt.errMsg, err.Error())
+			} else {
+				assert.NoError(t, err)
+			}
+		})
+	}
+}
diff --git a/pkg/graph/schema/resolver/ttl_cached_test.go b/pkg/graph/schema/resolver/ttl_cached_test.go
new file mode 100644
index 0000000..6f1e972
--- /dev/null
+++ b/pkg/graph/schema/resolver/ttl_cached_test.go
@@ -0,0 +1,200 @@
+// Copyright 2025 The Kubernetes Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package resolver
+
+import (
+	"sync"
+	"sync/atomic"
+	"testing"
+	"time"
+
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/kube-openapi/pkg/validation/spec"
+)
+
+type mockResolver struct {
+	callCount int32
+	schemas   map[schema.GroupVersionKind]*spec.Schema
+}
+
+func newMockResolver() *mockResolver {
+	return &mockResolver{
+		schemas: make(map[schema.GroupVersionKind]*spec.Schema),
+	}
+}
+
+func (m *mockResolver) ResolveSchema(gvk schema.GroupVersionKind) (*spec.Schema, error) {
+	atomic.AddInt32(&m.callCount, 1)
+
+	return &spec.Schema{
+		SchemaProps: spec.SchemaProps{
+			Type: []string{"object"},
+		},
+	}, nil
+}
+
+func (m *mockResolver) getCallCount() int {
+	return int(atomic.LoadInt32(&m.callCount))
+}
+
+func TestTTLCachedSchemaResolver_ConcurrentCallCounting(t *testing.T) {
+	mock := newMockResolver()
+	cachedResolver := NewTTLCachedSchemaResolver(mock, 100, 1*time.Hour)
+
+	gvk := schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"}
+
+	var wg sync.WaitGroup
+	for i := 0; i < 50; i++ {
+		wg.Add(1)
+		go func() {
+			defer wg.Done()
+			_, err := cachedResolver.ResolveSchema(gvk)
+			if err != nil {
+				t.Errorf("unexpected error: %v", err)
+			}
+		}()
+	}
+	wg.Wait()
+
+	if calls := mock.getCallCount(); calls != 1 {
+		t.Errorf("expected 1 call with concurrent access, got %d", calls)
+	}
+}
+
+func TestTTLCachedSchemaResolver_DifferentGVKCallCounting(t *testing.T) {
+	mock := newMockResolver()
+	cachedResolver := NewTTLCachedSchemaResolver(mock, 100, 1*time.Hour)
+
+	gvks := []schema.GroupVersionKind{
+		{Group: "apps", Version: "v1", Kind: "Deployment"},
+		{Group: "apps", Version: "v1", Kind: "StatefulSet"},
+		{Group: "batch", Version: "v1", Kind: "Job"},
+	}
+
+	for _, gvk := range gvks {
+		for i := 0; i < 2; i++ {
+			_, err := cachedResolver.ResolveSchema(gvk)
+			if err != nil {
+				t.Fatalf("unexpected error for %v: %v", gvk, err)
+			}
+		}
+	}
+
+	if calls := mock.getCallCount(); calls != len(gvks) {
+		t.Errorf("expected %d calls for %d unique GVKs, got %d", len(gvks), len(gvks), calls)
+	}
+}
+
+func TestTTLCachedSchemaResolver_TTLExpiry(t *testing.T) {
+	mock := newMockResolver()
+
+	ttl := 100 * time.Millisecond
+	cachedResolver := NewTTLCachedSchemaResolver(mock, 100, ttl)
+
+	gvk := schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"}
+
+	_, err := cachedResolver.ResolveSchema(gvk)
+	if err != nil {
+		t.Fatalf("unexpected error: %v", err)
+	}
+
+	if calls := mock.getCallCount(); calls != 1 {
+		t.Errorf("expected 1 initial call, got %d", calls)
+	}
+
+	time.Sleep(ttl + 50*time.Millisecond)
+
+	_, err = cachedResolver.ResolveSchema(gvk)
+	if err != nil {
+		t.Fatalf("unexpected error: %v", err)
+	}
+
+	if calls := mock.getCallCount(); calls != 2 {
+		t.Errorf("expected 2 calls after TTL expiry, got %d", calls)
+	}
+}
+
+func TestTTLCachedSchemaResolver_LRUEviction(t *testing.T) {
+	mock := newMockResolver()
+
+	cacheSize := 3
+	cachedResolver := NewTTLCachedSchemaResolver(mock, cacheSize, 1*time.Hour)
+
+	gvks := []schema.GroupVersionKind{
+		{Group: "apps", Version: "v1", Kind: "Deployment"},
+		{Group: "apps", Version: "v1", Kind: "StatefulSet"},
+		{Group: "batch", Version: "v1", Kind: "Job"},
+		{Group: "batch", Version: "v1", Kind: "CronJob"},
+	}
+
+	for _, gvk := range gvks {
+		_, err := cachedResolver.ResolveSchema(gvk)
+		if err != nil {
+			t.Fatalf("unexpected error for %v: %v", gvk, err)
+		}
+	}
+
+	if calls := mock.getCallCount(); calls != len(gvks) {
+		t.Errorf("expected %d calls for initial population, got %d", len(gvks), calls)
+	}
+
+	atomic.StoreInt32(&mock.callCount, 0)
+
+	_, err := cachedResolver.ResolveSchema(gvks[0])
+	if err != nil {
+		t.Fatalf("unexpected error: %v", err)
+	}
+
+	if calls := mock.getCallCount(); calls != 1 {
+		t.Errorf("expected 1 call after LRU eviction, got %d", calls)
+	}
+
+	atomic.StoreInt32(&mock.callCount, 0)
+	_, err = cachedResolver.ResolveSchema(gvks[len(gvks)-1])
+	if err != nil {
+		t.Fatalf("unexpected error: %v", err)
+	}
+
+	if calls := mock.getCallCount(); calls != 0 {
+		t.Errorf("expected 0 calls for cache hit, got %d", calls)
+	}
+}
+
+func TestTTLCachedSchemaResolver_CacheHitAfterInitial(t *testing.T) {
+	mock := newMockResolver()
+	cachedResolver := NewTTLCachedSchemaResolver(mock, 100, 1*time.Hour)
+
+	gvk := schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"}
+
+	_, err := cachedResolver.ResolveSchema(gvk)
+	if err != nil {
+		t.Fatalf("unexpected error: %v", err)
+	}
+
+	if calls := mock.getCallCount(); calls != 1 {
+		t.Errorf("expected 1 call for initial fetch, got %d", calls)
+	}
+
+	for i := 0; i < 10; i++ {
+		_, err := cachedResolver.ResolveSchema(gvk)
+		if err != nil {
+			t.Fatalf("unexpected error on call %d: %v", i, err)
+		}
+	}
+
+	if calls := mock.getCallCount(); calls != 1 {
+		t.Errorf("expected 1 total call with cache hits, got %d", calls)
+	}
+}
diff --git a/pkg/metadata/labels_test.go b/pkg/metadata/labels_test.go
index 1da8780..b8ccc81 100644
--- a/pkg/metadata/labels_test.go
+++ b/pkg/metadata/labels_test.go
@@ -65,6 +65,66 @@ func TestIsKROOwned(t *testing.T) {
 	}
 }
 
+func TestHasMatchingKROOwner(t *testing.T) {
+	cases := []struct {
+		name       string
+		aOwnerName string
+		aOwnerID   string
+		bOwnerName string
+		bOwnerID   string
+		expected   bool
+	}{
+		{
+			name:       "matching owners",
+			aOwnerName: "test-rgd",
+			aOwnerID:   "test-uid-123",
+			bOwnerName: "test-rgd",
+			bOwnerID:   "test-uid-123",
+			expected:   true,
+		},
+		{
+			name:       "different owner names",
+			aOwnerName: "test-rgd-a",
+			aOwnerID:   "test-uid-123",
+			bOwnerName: "test-rgd-b",
+			bOwnerID:   "test-uid-123",
+			expected:   false,
+		},
+		{
+			name:       "different owner IDs",
+			aOwnerName: "test-rgd",
+			aOwnerID:   "test-uid-123",
+			bOwnerName: "test-rgd",
+			bOwnerID:   "test-uid-456",
+			expected:   false,
+		},
+		{
+			name:     "no owner labels",
+			expected: true,
+		},
+	}
+
+	for _, tc := range cases {
+		t.Run(tc.name, func(t *testing.T) {
+			labelsA := map[string]string{}
+			labelsB := map[string]string{}
+			if tc.aOwnerName != "" {
+				labelsA[ResourceGraphDefinitionNameLabel] = tc.aOwnerName
+				labelsA[ResourceGraphDefinitionIDLabel] = tc.aOwnerID
+			}
+			if tc.bOwnerName != "" {
+				labelsB[ResourceGraphDefinitionNameLabel] = tc.bOwnerName
+				labelsB[ResourceGraphDefinitionIDLabel] = tc.bOwnerID
+			}
+
+			metaA := metav1.ObjectMeta{Labels: labelsA}
+			metaB := metav1.ObjectMeta{Labels: labelsB}
+			result := HasMatchingKROOwner(metaA, metaB)
+			assert.Equal(t, tc.expected, result)
+		})
+	}
+}
+
 func TestSetKROOwned(t *testing.T) {
 	cases := []struct {
 		name          string
diff --git a/test/integration/suites/core/crd_test.go b/test/integration/suites/core/crd_test.go
index 8fa5c1c..7605c7e 100644
--- a/test/integration/suites/core/crd_test.go
+++ b/test/integration/suites/core/crd_test.go
@@ -27,6 +27,7 @@ import (
 	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/apimachinery/pkg/util/rand"
 
+	krov1alpha1 "github.com/kubernetes-sigs/kro/api/v1alpha1"
 	"github.com/kubernetes-sigs/kro/pkg/metadata"
 	"github.com/kubernetes-sigs/kro/pkg/testutil/generator"
 )
@@ -192,6 +193,57 @@ var _ = Describe("CRD", func() {
 		})
 	})
 
+	Context("CRD Ownership Conflicts", func() {
+		It("should prevent multiple ResourceGraphDefinitions from managing the same CRD", func(ctx SpecContext) {
+			// Create first RGD
+			rgd1 := generator.NewResourceGraphDefinition("test-crd-owner-1",
+				generator.WithSchema(
+					"ConflictTest", "v1alpha1",
+					map[string]interface{}{
+						"field1": "string",
+					},
+					nil,
+				),
+			)
+			Expect(env.Client.Create(ctx, rgd1)).To(Succeed())
+
+			// Wait for CRD to be created by RGD1
+			crdName := "conflicttests.kro.run"
+			crd := &apiextensionsv1.CustomResourceDefinition{}
+			Eventually(func(g Gomega, ctx SpecContext) {
+				err := env.Client.Get(ctx, types.NamespacedName{Name: crdName}, crd)
+				g.Expect(err).ToNot(HaveOccurred())
+				g.Expect(metadata.IsKROOwned(crd.ObjectMeta)).To(BeTrue())
+				g.Expect(crd.Labels[metadata.ResourceGraphDefinitionNameLabel]).To(Equal("test-crd-owner-1"))
+			}, 10*time.Second, time.Second).WithContext(ctx).Should(Succeed())
+
+			// Create second RGD trying to manage the same CRD
+			rgd2 := generator.NewResourceGraphDefinition("test-crd-owner-2",
+				generator.WithSchema(
+					"ConflictTest", "v1alpha1",
+					map[string]interface{}{
+						"field1": "string",
+						"field2": "integer",
+					},
+					nil,
+				),
+			)
+			Expect(env.Client.Create(ctx, rgd2)).To(Succeed())
+
+			// Verify RGD2 fails to reconcile due to ownership conflict
+			Eventually(func(g Gomega, ctx SpecContext) {
+				err := env.Client.Get(ctx, types.NamespacedName{Name: "test-crd-owner-2"}, rgd2)
+				g.Expect(err).ToNot(HaveOccurred())
+				// RGD2 should remain in Inactive state due to CRD ownership conflict
+				g.Expect(rgd2.Status.State).To(Equal(krov1alpha1.ResourceGraphDefinitionStateInactive))
+			}, 10*time.Second, time.Second).WithContext(ctx).Should(Succeed())
+
+			// Cleanup
+			Expect(env.Client.Delete(ctx, rgd1)).To(Succeed())
+			Expect(env.Client.Delete(ctx, rgd2)).To(Succeed())
+		})
+	})
+
 	Context("CRD Watch Reconciliation", func() {
 		It("should reconcile the ResourceGraphDefinition back when CRD is manually modified", func(ctx SpecContext) {
 			rgdName := "test-crd-watch"