diff --git a/.changeset/big-seals-drum.md b/.changeset/big-seals-drum.md new file mode 100644 index 0000000000..9b4ab16701 --- /dev/null +++ b/.changeset/big-seals-drum.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Exported `QuickStartCard` component. diff --git a/.changeset/breezy-coats-sort.md b/.changeset/breezy-coats-sort.md new file mode 100644 index 0000000000..862d60e4fc --- /dev/null +++ b/.changeset/breezy-coats-sort.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Updates to allow users to subscribe to the newly created repository within GitHub to mimic similar functionality found within the GitHub UI. diff --git a/.changeset/calm-tigers-boil.md b/.changeset/calm-tigers-boil.md new file mode 100644 index 0000000000..0e19371805 --- /dev/null +++ b/.changeset/calm-tigers-boil.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fixed incompatible `@typescript-eslint` versions with current `eslint@8.x.x` diff --git a/.changeset/create-app-1735034814.md b/.changeset/create-app-1735034814.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1735034814.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/create-app-1736262177.md b/.changeset/create-app-1736262177.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1736262177.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/cuddly-lions-knock.md b/.changeset/cuddly-lions-knock.md new file mode 100644 index 0000000000..dd5a6b31e7 --- /dev/null +++ b/.changeset/cuddly-lions-knock.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-openapi': patch +--- + +Refactor to no longer use backend-common diff --git a/.changeset/cyan-frogs-count.md b/.changeset/cyan-frogs-count.md new file mode 100644 index 0000000000..b06a07468a --- /dev/null +++ b/.changeset/cyan-frogs-count.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-devtools-backend': patch +--- + +Remove the error handler middleware, since that is now provided by the framework diff --git a/.changeset/dry-hounds-study.md b/.changeset/dry-hounds-study.md new file mode 100644 index 0000000000..0d58431439 --- /dev/null +++ b/.changeset/dry-hounds-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-signals-backend': minor +--- + +Removed support for the old backend system. If you were using the old `createRouter` export, please migrate to [the new backend system](https://backstage.io/docs/backend-system/). diff --git a/.changeset/famous-balloons-punch.md b/.changeset/famous-balloons-punch.md new file mode 100644 index 0000000000..a6e7072974 --- /dev/null +++ b/.changeset/famous-balloons-punch.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/backend-defaults': patch +--- + +Go back to using `node-fetch` for gitlab diff --git a/.changeset/famous-dryers-protect.md b/.changeset/famous-dryers-protect.md new file mode 100644 index 0000000000..b015a562aa --- /dev/null +++ b/.changeset/famous-dryers-protect.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-node': patch +--- + +Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. diff --git a/.changeset/fluffy-jars-protect.md b/.changeset/fluffy-jars-protect.md new file mode 100644 index 0000000000..89ff39d9af --- /dev/null +++ b/.changeset/fluffy-jars-protect.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Creates new CatalogAutocomplete component in catalog-react that aligns with Select component UI for consistent a dropdown UI for all catalog filters. diff --git a/.changeset/gentle-deers-return.md b/.changeset/gentle-deers-return.md new file mode 100644 index 0000000000..5784226b1d --- /dev/null +++ b/.changeset/gentle-deers-return.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Allow passing down `withSearch` prop to `EntityTechdocsContent` component since it was `true` by default, now user can use the `EntityTechdocsContent` component _without_ showing the search field on top of the content. diff --git a/.changeset/gorgeous-zebras-tan.md b/.changeset/gorgeous-zebras-tan.md new file mode 100644 index 0000000000..7a71d9c724 --- /dev/null +++ b/.changeset/gorgeous-zebras-tan.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-notifications-backend-module-email': patch +--- + +Added more examples of the plugin configuration diff --git a/.changeset/lemon-students-care.md b/.changeset/lemon-students-care.md new file mode 100644 index 0000000000..951430f06a --- /dev/null +++ b/.changeset/lemon-students-care.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Corrected spelling mistake in error message diff --git a/.changeset/light-wasps-unite.md b/.changeset/light-wasps-unite.md new file mode 100644 index 0000000000..1075633f04 --- /dev/null +++ b/.changeset/light-wasps-unite.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-techdocs-backend': patch +--- + +fix(config): add missing parameters in config schema diff --git a/.changeset/little-scissors-fold.md b/.changeset/little-scissors-fold.md new file mode 100644 index 0000000000..1b70e3977d --- /dev/null +++ b/.changeset/little-scissors-fold.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Fix field extension validation not working when field is in dependencies in an array field diff --git a/.changeset/long-parrots-hide.md b/.changeset/long-parrots-hide.md new file mode 100644 index 0000000000..ac6c08b809 --- /dev/null +++ b/.changeset/long-parrots-hide.md @@ -0,0 +1,7 @@ +--- +'@backstage/frontend-plugin-api': patch +'@backstage/core-plugin-api': patch +'@backstage/types': patch +--- + +Move `Expand` and `ExpandRecursive` to `@backstage/types` diff --git a/.changeset/metal-ravens-hammer.md b/.changeset/metal-ravens-hammer.md new file mode 100644 index 0000000000..e8a97f412c --- /dev/null +++ b/.changeset/metal-ravens-hammer.md @@ -0,0 +1,6 @@ +--- +'@backstage/config-loader': patch +'@backstage/backend-defaults': patch +--- + +Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present diff --git a/.changeset/nasty-pears-taste.md b/.changeset/nasty-pears-taste.md new file mode 100644 index 0000000000..667e85d9d4 --- /dev/null +++ b/.changeset/nasty-pears-taste.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Fixed an issue where the `` in `offset` mode would unnecessarily re-fetch data when the filter didn't change, causing a flicker effect. diff --git a/.changeset/nervous-bottles-occur.md b/.changeset/nervous-bottles-occur.md new file mode 100644 index 0000000000..c489661645 --- /dev/null +++ b/.changeset/nervous-bottles-occur.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab-org': patch +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-permission-node': patch +'@backstage/plugin-events-backend': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-node': patch +--- + +Remove some internal usages of the backend-common package diff --git a/.changeset/orange-icons-sell.md b/.changeset/orange-icons-sell.md new file mode 100644 index 0000000000..73702f59d1 --- /dev/null +++ b/.changeset/orange-icons-sell.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Added `--jobs unlimited` to `dev` script to help cases where the backend does not start up during local development diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..47232c15e9 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,236 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "example-app": "0.2.104", + "@backstage/app-defaults": "1.5.15", + "example-app-next": "0.0.18", + "app-next-example-plugin": "0.0.18", + "example-backend": "0.0.33", + "@backstage/backend-app-api": "1.1.0", + "@backstage/backend-defaults": "0.6.0", + "@backstage/backend-dev-utils": "0.1.5", + "@backstage/backend-dynamic-feature-service": "0.5.2", + "example-backend-legacy": "0.2.105", + "@backstage/backend-openapi-utils": "0.4.0", + "@backstage/backend-plugin-api": "1.1.0", + "@backstage/backend-test-utils": "1.2.0", + "@backstage/canon": "0.0.0", + "@backstage/catalog-client": "1.9.0", + "@backstage/catalog-model": "1.7.2", + "@backstage/cli": "0.29.4", + "@backstage/cli-common": "0.1.15", + "@backstage/cli-node": "0.2.11", + "@backstage/codemods": "0.1.52", + "@backstage/config": "1.3.1", + "@backstage/config-loader": "1.9.3", + "@backstage/core-app-api": "1.15.3", + "@backstage/core-compat-api": "0.3.4", + "@backstage/core-components": "0.16.2", + "@backstage/core-plugin-api": "1.10.2", + "@backstage/create-app": "0.5.23", + "@backstage/dev-utils": "1.1.5", + "e2e-test": "0.2.23", + "@backstage/e2e-test-utils": "0.1.1", + "@backstage/errors": "1.2.6", + "@backstage/eslint-plugin": "0.1.10", + "@backstage/frontend-app-api": "0.10.3", + "@backstage/frontend-defaults": "0.1.4", + "@internal/frontend": "0.0.4", + "@backstage/frontend-plugin-api": "0.9.3", + "@backstage/frontend-test-utils": "0.2.4", + "@backstage/integration": "1.16.0", + "@backstage/integration-aws-node": "0.1.14", + "@backstage/integration-react": "1.2.2", + "@internal/opaque": "0.0.1", + "@backstage/release-manifests": "0.0.12", + "@backstage/repo-tools": "0.12.0", + "@internal/scaffolder": "0.0.4", + "@techdocs/cli": "1.8.24", + "techdocs-cli-embedded-app": "0.2.103", + "@backstage/test-utils": "1.7.3", + "@backstage/theme": "0.6.3", + "@backstage/types": "1.2.0", + "@backstage/version-bridge": "1.0.10", + "yarn-plugin-backstage": "0.0.4", + "@backstage/plugin-api-docs": "0.12.2", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.8", + "@backstage/plugin-app": "0.1.4", + "@backstage/plugin-app-backend": "0.4.3", + "@backstage/plugin-app-node": "0.1.28", + "@backstage/plugin-app-visualizer": "0.1.14", + "@backstage/plugin-auth-backend": "0.24.1", + "@backstage/plugin-auth-backend-module-atlassian-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-auth0-provider": "0.1.3", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-bitbucket-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-bitbucket-server-provider": "0.1.3", + "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-github-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-gitlab-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-google-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-guest-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-microsoft-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-oauth2-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-oidc-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-okta-provider": "0.1.3", + "@backstage/plugin-auth-backend-module-onelogin-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-pinniped-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.4.2", + "@backstage/plugin-auth-node": "0.5.5", + "@backstage/plugin-auth-react": "0.1.10", + "@backstage/plugin-bitbucket-cloud-common": "0.2.26", + "@backstage/plugin-catalog": "1.26.0", + "@backstage/plugin-catalog-backend": "1.29.0", + "@backstage/plugin-catalog-backend-module-aws": "0.4.6", + "@backstage/plugin-catalog-backend-module-azure": "0.3.0", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.4.3", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.4.3", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.3.0", + "@backstage/plugin-catalog-backend-module-gcp": "0.3.3", + "@backstage/plugin-catalog-backend-module-gerrit": "0.2.5", + "@backstage/plugin-catalog-backend-module-github": "0.7.8", + "@backstage/plugin-catalog-backend-module-github-org": "0.3.5", + "@backstage/plugin-catalog-backend-module-gitlab": "0.6.0", + "@backstage/plugin-catalog-backend-module-gitlab-org": "0.2.4", + "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.6.1", + "@backstage/plugin-catalog-backend-module-ldap": "0.11.0", + "@backstage/plugin-catalog-backend-module-logs": "0.1.5", + "@backstage/plugin-catalog-backend-module-msgraph": "0.6.5", + "@backstage/plugin-catalog-backend-module-openapi": "0.2.5", + "@backstage/plugin-catalog-backend-module-puppetdb": "0.2.5", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.3", + "@backstage/plugin-catalog-backend-module-unprocessed": "0.5.3", + "@backstage/plugin-catalog-common": "1.1.2", + "@backstage/plugin-catalog-graph": "0.4.14", + "@backstage/plugin-catalog-import": "0.12.8", + "@backstage/plugin-catalog-node": "1.15.0", + "@backstage/plugin-catalog-react": "1.15.0", + "@backstage/plugin-catalog-unprocessed-entities": "0.2.12", + "@backstage/plugin-catalog-unprocessed-entities-common": "0.0.6", + "@backstage/plugin-config-schema": "0.1.63", + "@backstage/plugin-devtools": "0.1.22", + "@backstage/plugin-devtools-backend": "0.5.0", + "@backstage/plugin-devtools-common": "0.1.14", + "@backstage/plugin-events-backend": "0.4.0", + "@backstage/plugin-events-backend-module-aws-sqs": "0.4.6", + "@backstage/plugin-events-backend-module-azure": "0.2.15", + "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.15", + "@backstage/plugin-events-backend-module-gerrit": "0.2.15", + "@backstage/plugin-events-backend-module-github": "0.2.15", + "@backstage/plugin-events-backend-module-gitlab": "0.2.15", + "@backstage/plugin-events-backend-test-utils": "0.1.39", + "@backstage/plugin-events-node": "0.4.6", + "@internal/plugin-todo-list": "1.0.34", + "@internal/plugin-todo-list-backend": "1.0.34", + "@internal/plugin-todo-list-common": "1.0.23", + "@backstage/plugin-home": "0.8.3", + "@backstage/plugin-home-react": "0.1.21", + "@backstage/plugin-kubernetes": "0.12.2", + "@backstage/plugin-kubernetes-backend": "0.19.1", + "@backstage/plugin-kubernetes-cluster": "0.0.20", + "@backstage/plugin-kubernetes-common": "0.9.1", + "@backstage/plugin-kubernetes-node": "0.2.1", + "@backstage/plugin-kubernetes-react": "0.5.2", + "@backstage/plugin-notifications": "0.5.0", + "@backstage/plugin-notifications-backend": "0.5.0", + "@backstage/plugin-notifications-backend-module-email": "0.3.4", + "@backstage/plugin-notifications-common": "0.0.7", + "@backstage/plugin-notifications-node": "0.2.10", + "@backstage/plugin-org": "0.6.34", + "@backstage/plugin-org-react": "0.1.33", + "@backstage/plugin-permission-backend": "0.5.52", + "@backstage/plugin-permission-backend-module-allow-all-policy": "0.2.3", + "@backstage/plugin-permission-common": "0.8.3", + "@backstage/plugin-permission-node": "0.8.6", + "@backstage/plugin-permission-react": "0.4.29", + "@backstage/plugin-proxy-backend": "0.5.9", + "@backstage/plugin-scaffolder": "1.27.2", + "@backstage/plugin-scaffolder-backend": "1.28.0", + "@backstage/plugin-scaffolder-backend-module-azure": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.5", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.3.4", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.3.5", + "@backstage/plugin-scaffolder-backend-module-gcp": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-gitea": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-github": "0.5.4", + "@backstage/plugin-scaffolder-backend-module-gitlab": "0.7.0", + "@backstage/plugin-scaffolder-backend-module-notifications": "0.1.5", + "@backstage/plugin-scaffolder-backend-module-rails": "0.5.4", + "@backstage/plugin-scaffolder-backend-module-sentry": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.4.5", + "@backstage/plugin-scaffolder-common": "1.5.8", + "@backstage/plugin-scaffolder-node": "0.6.2", + "@backstage/plugin-scaffolder-node-test-utils": "0.1.17", + "@backstage/plugin-scaffolder-react": "1.14.2", + "@backstage/plugin-search": "1.4.21", + "@backstage/plugin-search-backend": "1.8.0", + "@backstage/plugin-search-backend-module-catalog": "0.2.6", + "@backstage/plugin-search-backend-module-elasticsearch": "1.6.3", + "@backstage/plugin-search-backend-module-explore": "0.2.6", + "@backstage/plugin-search-backend-module-pg": "0.5.39", + "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.3.4", + "@backstage/plugin-search-backend-module-techdocs": "0.3.4", + "@backstage/plugin-search-backend-node": "1.3.6", + "@backstage/plugin-search-common": "1.2.16", + "@backstage/plugin-search-react": "1.8.4", + "@backstage/plugin-signals": "0.0.14", + "@backstage/plugin-signals-backend": "0.2.4", + "@backstage/plugin-signals-node": "0.1.15", + "@backstage/plugin-signals-react": "0.0.8", + "@backstage/plugin-techdocs": "1.12.0", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.43", + "@backstage/plugin-techdocs-backend": "1.11.4", + "@backstage/plugin-techdocs-common": "0.1.0", + "@backstage/plugin-techdocs-module-addons-contrib": "1.1.19", + "@backstage/plugin-techdocs-node": "1.12.15", + "@backstage/plugin-techdocs-react": "1.2.12", + "@backstage/plugin-user-settings": "0.8.17", + "@backstage/plugin-user-settings-backend": "0.2.28", + "@backstage/plugin-user-settings-common": "0.0.1" + }, + "changesets": [ + "big-seals-drum", + "breezy-coats-sort", + "calm-tigers-boil", + "create-app-1735034814", + "create-app-1736262177", + "cuddly-lions-knock", + "cyan-frogs-count", + "dry-hounds-study", + "famous-balloons-punch", + "famous-dryers-protect", + "gentle-deers-return", + "gorgeous-zebras-tan", + "khaki-fireants-begin", + "lemon-students-care", + "light-wasps-unite", + "little-scissors-fold", + "long-parrots-hide", + "metal-ravens-hammer", + "nasty-pears-taste", + "nervous-bottles-occur", + "nice-waves-count", + "orange-icons-sell", + "quick-poems-cover", + "red-hotels-sneeze", + "renovate-dcf1169", + "rich-penguins-stare", + "rich-vans-hope", + "shiny-walls-press", + "silly-bottles-raise", + "smart-plants-sip", + "spicy-tomatoes-hammer", + "strong-students-beg", + "tall-actors-clap", + "twenty-laws-tie", + "two-wasps-mix", + "weak-frogs-nail" + ] +} diff --git a/.changeset/quick-poems-cover.md b/.changeset/quick-poems-cover.md new file mode 100644 index 0000000000..099bb550fb --- /dev/null +++ b/.changeset/quick-poems-cover.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-search-backend-module-catalog': minor +--- + +**BREAKING**: Removed support for the old backend system. Please [migrate to the new backend system](https://backstage.io/docs/backend-system/) and enable [the catalog collator](https://backstage.io/docs/features/search/collators#catalog) there. + +As part of this, the `/alpha` export path is gone too. Just import the module from the root of the package as usual instead. diff --git a/.changeset/red-hotels-sneeze.md b/.changeset/red-hotels-sneeze.md new file mode 100644 index 0000000000..a1ce4d7bd6 --- /dev/null +++ b/.changeset/red-hotels-sneeze.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Fixing spelling mistake in translation diff --git a/.changeset/renovate-dcf1169.md b/.changeset/renovate-dcf1169.md new file mode 100644 index 0000000000..b23fd46c77 --- /dev/null +++ b/.changeset/renovate-dcf1169.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-home-react': patch +'@backstage/plugin-home': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Updated dependency `@rjsf/utils` to `5.23.2`. +Updated dependency `@rjsf/core` to `5.23.2`. +Updated dependency `@rjsf/material-ui` to `5.23.2`. +Updated dependency `@rjsf/validator-ajv8` to `5.23.2`. diff --git a/.changeset/rich-penguins-stare.md b/.changeset/rich-penguins-stare.md new file mode 100644 index 0000000000..0993b0fb55 --- /dev/null +++ b/.changeset/rich-penguins-stare.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Fixed scaffolder form fields not resolving correctly in the `useCustomFieldExtensions` hook. diff --git a/.changeset/rich-vans-hope.md b/.changeset/rich-vans-hope.md new file mode 100644 index 0000000000..3e219a13b6 --- /dev/null +++ b/.changeset/rich-vans-hope.md @@ -0,0 +1,12 @@ +--- +'@backstage/backend-dynamic-feature-service': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/backend-defaults': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-node': patch +--- + +Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types diff --git a/.changeset/shiny-walls-press.md b/.changeset/shiny-walls-press.md new file mode 100644 index 0000000000..29fe54afa2 --- /dev/null +++ b/.changeset/shiny-walls-press.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-defaults': minor +--- + +Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. + +If you were using the standard `MiddlewareFactory` just to put an `error` middleware in you router, you can now remove that at your earliest convenience since it's redundant. If you have custom error handlers in your plugin router, those will continue to function as previously. If you were relying on thrown errors propagating all the way down to the root HTTP router, you will find that they no longer do that, and may want to hoist your error handling up to the plugin level instead. diff --git a/.changeset/smart-plants-sip.md b/.changeset/smart-plants-sip.md new file mode 100644 index 0000000000..1a5d456a9b --- /dev/null +++ b/.changeset/smart-plants-sip.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-api-docs': patch +--- + +Fix typo in default path of api docs definition route diff --git a/.changeset/spicy-tomatoes-hammer.md b/.changeset/spicy-tomatoes-hammer.md new file mode 100644 index 0000000000..20564b9a05 --- /dev/null +++ b/.changeset/spicy-tomatoes-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Removed the long-deprecated `DefaultCatalogCollatorFactory` and `DefaultCatalogCollatorFactoryOptions` exports, which now no longer exist in the search plugin's offerings. If you were using these, you want to migrate to [the new backend system](https://backstage.io/docs/backend-system/) and use the [catalog collator](https://backstage.io/docs/features/search/collators#catalog) directly. diff --git a/.changeset/strong-students-beg.md b/.changeset/strong-students-beg.md new file mode 100644 index 0000000000..5b3653d389 --- /dev/null +++ b/.changeset/strong-students-beg.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-node': patch +--- + +Deprecate the `logStream` option in `executeShellCommand`, replacing it with a logger instance. diff --git a/.changeset/tall-actors-clap.md b/.changeset/tall-actors-clap.md new file mode 100644 index 0000000000..594918a362 --- /dev/null +++ b/.changeset/tall-actors-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Fix issue with `secrets` not being forwarded properly to the backend when creating a task diff --git a/.changeset/twenty-laws-tie.md b/.changeset/twenty-laws-tie.md new file mode 100644 index 0000000000..02e6fca70c --- /dev/null +++ b/.changeset/twenty-laws-tie.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Updated condition in `resolveCodeOwner` to fix a bug where `normalizeCodeOwner` could potentially be called with an invalid argument causing an error in `CodeOwnersProcessor` diff --git a/.changeset/two-wasps-mix.md b/.changeset/two-wasps-mix.md new file mode 100644 index 0000000000..47d8a8a89b --- /dev/null +++ b/.changeset/two-wasps-mix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Internal refactor for safer handling of possible null value. diff --git a/.changeset/weak-frogs-nail.md b/.changeset/weak-frogs-nail.md new file mode 100644 index 0000000000..cf6c5d3048 --- /dev/null +++ b/.changeset/weak-frogs-nail.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Fixes an issue in `GithubMultiOrgEntityProvider` that caused an error when processing teams without a parent. diff --git a/.eslintignore b/.eslintignore index 5ccd2d1ba0..ea8f6760c7 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,6 +7,7 @@ **/.git/** **/public/** **/microsite/** +**/canon-docs/** **/templates/** **/sample-templates/** playwright.config.ts diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 1052897346..091b999dd7 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -384,6 +384,7 @@ sdks seb semlas semver +sendmail serializable Serverless shoutout diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index a1764b976a..2285f61f48 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -59,7 +59,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1 + uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - name: Build and push uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml index b5027d78be..344425ca52 100644 --- a/.github/workflows/pr-review-comment-trigger.yaml +++ b/.github/workflows/pr-review-comment-trigger.yaml @@ -30,7 +30,7 @@ jobs: run: | mkdir -p ./pr echo $PR_NUMBER > ./pr/pr_number - - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: pr_number-${{ github.event.pull_request.number }} path: pr/ diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index db060a70d4..fc5323af63 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -58,7 +58,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: 'Upload artifact' - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: SARIF file path: results.sarif diff --git a/.github/workflows/sync_canon.yml b/.github/workflows/sync_canon.yml index 29a0ae2ce4..a45e8d115c 100644 --- a/.github/workflows/sync_canon.yml +++ b/.github/workflows/sync_canon.yml @@ -1,10 +1,10 @@ -name: Sync Canon Storybook +name: Sync Canon Docs on: push: branches: [master] jobs: - sync-canon-storybook: + sync-canon-docs: runs-on: ubuntu-latest steps: - name: Harden Runner @@ -26,31 +26,36 @@ jobs: with: cache-prefix: ${{ runner.os }}-v20.x - - name: Checkout backstage/canon-storybook + - name: Checkout backstage/canon-docs uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: - repository: backstage/canon-storybook - path: canon-storybook + repository: backstage/canon-docs + path: canon-external-docs token: ${{ secrets.GH_SERVICE_ACCOUNT_TOKEN }} - name: Configure Git run: | git config --global user.email noreply@backstage.io - git config --global user.name 'Github Canon Storybook workflow' + git config --global user.name 'Github Canon Docs workflow' - - name: Build Canon Storybook + - name: Install dependencies + working-directory: canon-docs + run: yarn install + + - name: Build Canon Docs + working-directory: canon-docs run: | - yarn workspace @backstage/canon run build-storybook + yarn build - - name: Replace contents of canon-storybook repo with Storybook build output - working-directory: canon-storybook + - name: Replace contents of canon-external-docs repo with docs build output + working-directory: canon-external-docs run: | git rm -rf . - cp -R ../packages/canon/storybook-static/. . + cp -R ../canon-docs/dist/. . - name: Commit to canon-storybook repo - working-directory: canon-storybook + working-directory: canon-external-docs run: | git add . - git commit -am "Canon Storybook build for backstage/backstage@${{ github.sha }}" + git commit -am "Canon Docs build for backstage/backstage@${{ github.sha }}" git push diff --git a/.prettierignore b/.prettierignore index c7a16065e5..cb744faa4c 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,9 @@ .yarn dist microsite +canon-docs/.next +canon-docs/public +canon-docs/out coverage *.hbs templates diff --git a/ADOPTERS.md b/ADOPTERS.md index b31e621938..1eacd4c104 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -280,3 +280,6 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [New10](https://www.new10.com/) | [Cleber Gasparoto](https://github.com/chgasparoto) | We use Backstage as our internal developer portal to catalog services across teams, implement custom Tech Insights for ensuring service standards adoption, and centralize API specifications to streamline development processes and cross-team collaboration. | [Tele2 Kazakhstan](https://tele2.kz/) / [Altel Digital](https://digital.altel.kz/) | [Kuanysh Bekkulov](https://www.linkedin.com/in/kuanysh-bekkulov/), [Alexandr Puzeyev](https://www.linkedin.com/in/alexandr-puzeyev/) | Developer portal: services, components, APIs, and resources; includes documentation (Docs-as-Code), service templates, and plugins for integration with internal systems and tools. | [Axelerant](https://www.axelerant.com/) | [Zeshan Ziya](https://github.com/zeshanziya) | Developer portal, main gateway to infrastructure, documentation, internal tooling, and service catalog with a focus on project visibility. +| [KnowBe4](https://www.knowbe4.com) | [Brandon Vicinus](https://www.linkedin.com/in/bvicinus/) | Internal Developer Portal managed by the Developer Experience Team. IDP hosts many different internal tools as plugins created by multiple teams, many of which are directly integrated with the Service Catalog. | +| [Scalepoint](https://scalepoint.com) | [Yuriy Ostapenko](https://github.com/yuriyostapenko), [Dmytro Pasko](https://github.com/dimapasko), [Yuri Sedykh ](https://github.com/yuiri-sedykh), [Bartosz Wisniewski](https://github.com/Epgor) | Internal Developer Portal: Software Catalog with infrastructure resources and dependencies, Software Templates, TechDocs, Tech Radar, Kubernetes and Observability, as well as custom CI/CD components | + diff --git a/canon-docs/.eslintrc.json b/canon-docs/.eslintrc.json new file mode 100644 index 0000000000..be99640f75 --- /dev/null +++ b/canon-docs/.eslintrc.json @@ -0,0 +1,8 @@ +{ + "extends": ["next/core-web-vitals", "next/typescript"], + "rules": { + "notice/notice": "off", + "react/forbid-elements": "off", + "jsx-a11y/alt-text": "off" + } +} diff --git a/canon-docs/.gitignore b/canon-docs/.gitignore new file mode 100644 index 0000000000..efc7e8ec3f --- /dev/null +++ b/canon-docs/.gitignore @@ -0,0 +1,4 @@ +# next.js +/.next/ +/dist/ +next-env.d.ts diff --git a/canon-docs/README.md b/canon-docs/README.md new file mode 100644 index 0000000000..d91076c4cd --- /dev/null +++ b/canon-docs/README.md @@ -0,0 +1,15 @@ +# Canon Docs + +Canon is our internal UI library built for Backstage. We built this website to document the library and its components. You can view this website [here](https://canon.backstage.io). + +## How to run locally + +This website is built with Next.js and it is hosted on Github pages. To run it locally, you can run the following command: + +```bash +yarn start +``` + +## Deployment + +Deployments are done automatically when a PR is merged into the `master` branch. We host the website using Github pages. diff --git a/canon-docs/next.config.mjs b/canon-docs/next.config.mjs new file mode 100644 index 0000000000..ca221d9a8c --- /dev/null +++ b/canon-docs/next.config.mjs @@ -0,0 +1,15 @@ +import createMDX from '@next/mdx'; + +const nextConfig = { + pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'], + output: 'export', + assetPrefix: '/', + distDir: 'dist', + images: { + unoptimized: true, + }, +}; + +const withMDX = createMDX({}); + +export default withMDX(nextConfig); diff --git a/canon-docs/package.json b/canon-docs/package.json new file mode 100644 index 0000000000..824a645f99 --- /dev/null +++ b/canon-docs/package.json @@ -0,0 +1,34 @@ +{ + "name": "canon-docs", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "next build", + "lint": "next lint", + "start": "concurrently \"next dev\" \"yarn watch-css\"", + "watch-css": "node scripts/watch-css.js" + }, + "dependencies": { + "@mdx-js/loader": "^3.1.0", + "@mdx-js/react": "^3.1.0", + "@next/mdx": "^15.1.4", + "@storybook/react": "^8.4.7", + "@types/mdx": "^2.0.13", + "next": "14.2.23", + "react": "^18", + "react-dom": "^18", + "react-frame-component": "^5.2.7", + "shiki": "^1.26.1", + "storybook": "^8.4.7" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "concurrently": "^9.1.2", + "eslint": "^8", + "eslint-config-next": "14.2.23", + "lightningcss": "^1.28.2", + "typescript": "^5" + } +} diff --git a/canon-docs/public/.nojekyll b/canon-docs/public/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/canon-docs/public/CNAME b/canon-docs/public/CNAME new file mode 100644 index 0000000000..01f6d196cc --- /dev/null +++ b/canon-docs/public/CNAME @@ -0,0 +1 @@ +canon.backstage.io \ No newline at end of file diff --git a/canon-docs/public/backstage.css b/canon-docs/public/backstage.css new file mode 100644 index 0000000000..c885f3c635 --- /dev/null +++ b/canon-docs/public/backstage.css @@ -0,0 +1,71 @@ +[data-theme-name="legacy"][data-theme="light"], [data-theme-name="legacy"][data-theme="dark"] { + --canon-font-regular: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; + + & .cn-button { + text-transform: uppercase; + box-shadow: none; + background-color: #1f5493; + border-radius: 4px; + padding: 6px 16px; + font-size: .875rem; + font-weight: 400; + line-height: 1.75; + transition: background-color .25s cubic-bezier(.4, 0, .2, 1), box-shadow .25s cubic-bezier(.4, 0, .2, 1), border .25s cubic-bezier(.4, 0, .2, 1); + + &:hover { + box-shadow: none; + } + + &.cn-button-primary { + color: #fff; + background-color: #153a66; + box-shadow: 0 3px 1px -2px #0003, 0 2px 2px #00000024, 0 1px 5px #0000001f; + + &:hover { + box-shadow: 0 2px 4px -1px #0003, 0 4px 5px #00000024, 0 1px 10px #0000001f; + } + } + + &.cn-button-secondary { + color: #1f5493; + background-color: #0000; + border: 1px solid #1f549380; + + &:hover { + background-color: #1f54930a; + border: 1px solid #1f5493; + } + } + + &.cn-button-tertiary { + color: #1f5493; + background-color: #0000; + border: none; + } + } +} + +[data-theme-name="legacy"][data-theme="light"] { + --canon-accent: #2e77d0; + --canon-background: #f8f8f8; + --canon-surface-1: #fff; + --canon-surface-2: #f4f4f4; + --canon-text-primary: #000; + --canon-text-primary-on-accent: #fff; + --canon-text-secondary: #646464; +} + +[data-theme-name="legacy"][data-theme="dark"] { + --canon-accent: #fff; + --canon-background: #000; + --canon-surface-1: #121212; + --canon-surface-2: #1a1a1a; + --canon-border-base: #fff3; + --canon-border-warning: #f50000; + --canon-border-error: #f87503; + --canon-border-selected: #25d262; + --canon-error: #f50000; + --canon-text-primary: #fff; + --canon-text-primary-on-accent: #000; + --canon-text-secondary: #b3b3b3; +} diff --git a/canon-docs/public/components.css b/canon-docs/public/components.css new file mode 100644 index 0000000000..a3f3899cd8 --- /dev/null +++ b/canon-docs/public/components.css @@ -0,0 +1,279 @@ +.cn-button { + all: unset; + user-select: none; + font-family: var(--canon-font-regular); + font-weight: var(--canon-font-weight-bold); + font-size: var(--canon-font-size-body); + cursor: pointer; + border-radius: 8px; + justify-content: center; + align-items: center; + padding: 0; + transition: all .15s; + display: inline-flex; +} + +.cn-button-primary { + background-color: var(--canon-accent); + color: var(--canon-text-primary-on-accent); + + &:hover { + box-shadow: inset 0 0 0 1px var(--canon-border-focus); + color: var(--canon-text-primary); + background-color: #0000; + } +} + +.cn-button-secondary { + box-shadow: inset 0 0 0 1px var(--canon-border-base); + color: var(--canon-text-primary); + background-color: #0000; + + &:hover { + box-shadow: inset 0 0 0 1px var(--canon-border-hover); + } +} + +.cn-button-tertiary { + color: var(--canon-text-primary); + background-color: #0000; + + &:hover { + color: var(--canon-text-secondary); + } +} + +.cn-button-small { + height: 32px; + padding-left: 6px; + padding-right: 6px; +} + +.cn-button-medium { + height: 40px; + padding-left: 8px; + padding-right: 8px; +} + +.cn-button-content { + align-items: center; + gap: var(--canon-spacing-xs); + font-weight: var(--canon-font-weight-bold); + display: flex; +} + +.cn-button-content-icon-both { + flex: 1; +} + +.canon-stack { + flex-direction: column; + display: flex; +} + +.canon-inline { + flex-wrap: wrap; + display: flex; +} + +.canon-grid { + display: grid; +} + +.canon-container { + max-width: var(--canon-container-max-width); + padding: 0 var(--canon-container-padding); + margin: 0 auto; +} + +.icon-12 { + width: 12px; + height: 12px; +} + +.icon-16 { + width: 16px; + height: 16px; +} + +.icon-24 { + width: 24px; + height: 24px; +} + +.checkbox-label { + justify-content: center; + align-items: center; + gap: var(--canon-spacing-xs); + font-size: var(--canon-font-size-xs); + font-family: var(--canon-font-regular); + color: var(--canon-text-primary); + user-select: none; + flex-direction: row; + display: flex; + + &:hover { + & .checkbox { + box-shadow: inset 0 0 0 1px var(--canon-border-hover); + } + } +} + +.checkbox { + all: unset; + width: 1rem; + height: 1rem; + box-shadow: inset 0 0 0 1px var(--canon-border-base); + cursor: pointer; + border-radius: 2px; + justify-content: center; + align-items: center; + transition: all .2s ease-in-out; + display: flex; + + &[data-checked] { + background-color: var(--canon-accent); + } +} + +.checkbox-indicator { + color: var(--canon-text-primary-on-accent); + justify-content: center; + align-items: center; + display: flex; +} + +.table { + background-color: var(--canon-surface-1); + border-radius: var(--canon-border-radius-xs); + width: 100%; + padding-bottom: var(--canon-spacing-5xs); + padding-top: var(--canon-spacing-5xs); + font-size: var(--canon-font-size-body); + position: relative; + overflow: auto; + + & table { + caption-side: bottom; + width: 100%; + font-size: var(--canon-font-size-sm); + border-collapse: collapse; + } +} + +.table-head { + text-align: left; + padding: var(--canon-spacing-xs); +} + +.table-body { + & tr:last-child { + border-bottom: none; + } +} + +.table-row { + transition: color .2s ease-in-out; + + &:hover td { + background-color: var(--canon-surface-3); + } + + & .table-cell:first-child { + border-top-left-radius: var(--canon-border-radius-xs); + border-bottom-left-radius: var(--canon-border-radius-xs); + box-shadow: inset 4px 2px 0 0 var(--canon-surface-1), inset 4px -2px 0 0 var(--canon-surface-1); + padding-left: var(--canon-spacing-xs); + } + + & .table-cell:last-child { + border-top-right-radius: var(--canon-border-radius-xs); + border-bottom-right-radius: var(--canon-border-radius-xs); + box-shadow: inset -4px 2px 0 0 var(--canon-surface-1), inset -4px -2px 0 0 var(--canon-surface-1); + padding-right: var(--canon-spacing-xs); + } +} + +.table-cell { + padding: var(--canon-spacing-xs); + background-color: var(--canon-surface-2); + box-shadow: inset 0px 2px 0 0 var(--canon-surface-1), inset 0px -2px 0 0 var(--canon-surface-1); +} + +.text { + font-family: var(--canon-font-regular); + color: var(--canon-text-primary); + margin: 0; + padding: 0; + + &.text-body { + font-size: var(--canon-font-size-body); + line-height: 140%; + } + + &.text-subtitle { + font-size: var(--canon-font-size-subtitle); + line-height: 140%; + } + + &.text-caption { + font-size: var(--canon-font-size-caption); + line-height: 140%; + } + + &.text-label { + font-size: var(--canon-font-size-label); + line-height: 140%; + } + + &.text-regular { + font-weight: var(--canon-font-weight-regular); + } + + &.text-bold { + font-weight: var(--canon-font-weight-bold); + } +} + +.text { + font-family: var(--canon-font-regular); + color: var(--canon-text-primary); + margin: 0; + padding: 0; + + &.text-display { + font-size: var(--canon-font-size-display); + line-height: 100%; + font-weight: var(--canon-font-weight-bold); + } + + &.text-title1 { + font-size: var(--canon-font-size-title1); + line-height: 100%; + font-weight: var(--canon-font-weight-bold); + } + + &.text-title2 { + font-size: var(--canon-font-size-title2); + line-height: 100%; + font-weight: var(--canon-font-weight-bold); + } + + &.text-title3 { + font-size: var(--canon-font-size-title3); + line-height: 100%; + font-weight: var(--canon-font-weight-bold); + } + + &.text-title4 { + font-size: var(--canon-font-size-title4); + line-height: 100%; + font-weight: var(--canon-font-weight-bold); + } + + &.text-title5 { + font-size: var(--canon-font-size-title5); + line-height: 100%; + font-weight: var(--canon-font-weight-bold); + } +} diff --git a/canon-docs/public/core.css b/canon-docs/public/core.css new file mode 100644 index 0000000000..62865e3c0b --- /dev/null +++ b/canon-docs/public/core.css @@ -0,0 +1,5757 @@ +/*! modern-normalize v3.0.1 | MIT License | https://github.com/sindresorhus/modern-normalize */ +@layer base { + *, :before, :after { + box-sizing: border-box; + } + + html { + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji; + line-height: 1.15; + } + + body { + margin: 0; + } + + b, strong { + font-weight: bolder; + } + + code, kbd, samp, pre { + font-family: ui-monospace, SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace; + font-size: 1em; + } + + small { + font-size: 80%; + } + + sub, sup { + vertical-align: baseline; + font-size: 75%; + line-height: 0; + position: relative; + } + + sub { + bottom: -.25em; + } + + sup { + top: -.5em; + } + + table { + border-color: currentColor; + } + + button, input, optgroup, select, textarea { + margin: 0; + font-family: inherit; + font-size: 100%; + line-height: 1.15; + } + + button, [type="button"], [type="reset"], [type="submit"] { + -webkit-appearance: button; + } + + legend { + padding: 0; + } + + progress { + vertical-align: baseline; + } + + ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { + height: auto; + } + + [type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; + } + + ::-webkit-search-decoration { + -webkit-appearance: none; + } + + ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; + } + + summary { + display: list-item; + } + + *, html, body { + font-family: var(--canon-font-regular); + font-weight: var(--canon-font-weight-regular); + } +} + +@layer utilities { + .cu-block { + display: block; + } + + .cu-border-base { + border-color: var(--canon-border-base); + border-style: solid; + border-width: 1px; + } + + .cu-border-error { + border-color: var(--canon-border-error); + border-style: solid; + border-width: 1px; + } + + .cu-border-none { + border-width: 0; + border-color: #0000; + } + + .cu-border-selected { + border-color: var(--canon-border-selected); + border-style: solid; + border-width: 1px; + } + + .cu-border-warning { + border-color: var(--canon-border-warning); + border-style: solid; + border-width: 1px; + } + + .cu-col-end-1 { + grid-column-end: 1; + } + + .cu-col-end-10 { + grid-column-end: 10; + } + + .cu-col-end-11 { + grid-column-end: 11; + } + + .cu-col-end-12 { + grid-column-end: 12; + } + + .cu-col-end-13 { + grid-column-end: 13; + } + + .cu-col-end-2 { + grid-column-end: 2; + } + + .cu-col-end-3 { + grid-column-end: 3; + } + + .cu-col-end-4 { + grid-column-end: 4; + } + + .cu-col-end-5 { + grid-column-end: 5; + } + + .cu-col-end-6 { + grid-column-end: 6; + } + + .cu-col-end-7 { + grid-column-end: 7; + } + + .cu-col-end-8 { + grid-column-end: 8; + } + + .cu-col-end-9 { + grid-column-end: 9; + } + + .cu-col-end-auto { + grid-column-end: auto; + } + + .cu-col-span-1 { + grid-column: span 1 / span 1; + } + + .cu-col-span-10 { + grid-column: span 10 / span 10; + } + + .cu-col-span-11 { + grid-column: span 11 / span 11; + } + + .cu-col-span-12 { + grid-column: span 12 / span 12; + } + + .cu-col-span-2 { + grid-column: span 2 / span 2; + } + + .cu-col-span-3 { + grid-column: span 3 / span 3; + } + + .cu-col-span-4 { + grid-column: span 4 / span 4; + } + + .cu-col-span-5 { + grid-column: span 5 / span 5; + } + + .cu-col-span-6 { + grid-column: span 6 / span 6; + } + + .cu-col-span-7 { + grid-column: span 7 / span 7; + } + + .cu-col-span-8 { + grid-column: span 8 / span 8; + } + + .cu-col-span-9 { + grid-column: span 9 / span 9; + } + + .cu-col-span-auto { + grid-column: span auto / span auto; + } + + .cu-col-start-1 { + grid-column-start: 1; + } + + .cu-col-start-10 { + grid-column-start: 10; + } + + .cu-col-start-11 { + grid-column-start: 11; + } + + .cu-col-start-12 { + grid-column-start: 12; + } + + .cu-col-start-13 { + grid-column-start: 13; + } + + .cu-col-start-2 { + grid-column-start: 2; + } + + .cu-col-start-3 { + grid-column-start: 3; + } + + .cu-col-start-4 { + grid-column-start: 4; + } + + .cu-col-start-5 { + grid-column-start: 5; + } + + .cu-col-start-6 { + grid-column-start: 6; + } + + .cu-col-start-7 { + grid-column-start: 7; + } + + .cu-col-start-8 { + grid-column-start: 8; + } + + .cu-col-start-9 { + grid-column-start: 9; + } + + .cu-col-start-auto { + grid-column-start: auto; + } + + .cu-flex { + display: flex; + } + + .cu-flex-col { + flex-direction: column; + } + + .cu-flex-nowrap { + flex-wrap: nowrap; + } + + .cu-flex-row { + flex-direction: row; + } + + .cu-flex-wrap { + flex-wrap: wrap; + } + + .cu-flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .cu-gap-2xl { + gap: var(--canon-spacing-2xl); + } + + .cu-gap-lg { + gap: var(--canon-spacing-lg); + } + + .cu-gap-md { + gap: var(--canon-spacing-md); + } + + .cu-gap-none { + gap: 0; + } + + .cu-gap-sm { + gap: var(--canon-spacing-sm); + } + + .cu-gap-xl { + gap: var(--canon-spacing-xl); + } + + .cu-gap-xs { + gap: var(--canon-spacing-xs); + } + + .cu-grid { + display: grid; + } + + .cu-grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + + .cu-grid-cols-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + + .cu-grid-cols-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + + .cu-grid-cols-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + + .cu-grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .cu-grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .cu-grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .cu-grid-cols-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + + .cu-grid-cols-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + + .cu-grid-cols-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + + .cu-grid-cols-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + .cu-grid-cols-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + + .cu-grid-cols-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + + .cu-hidden { + display: none; + } + + .cu-inline { + display: inline; + } + + .cu-inline-block { + display: inline-block; + } + + .cu-items-center { + align-items: center; + } + + .cu-items-end { + align-items: flex-end; + } + + .cu-items-start { + align-items: flex-start; + } + + .cu-items-stretch { + align-items: stretch; + } + + .cu-justify-around { + justify-content: space-around; + } + + .cu-justify-between { + justify-content: space-between; + } + + .cu-justify-center { + justify-content: center; + } + + .cu-justify-end { + justify-content: flex-end; + } + + .cu-justify-start { + justify-content: flex-start; + } + + .cu-justify-stretch { + justify-content: stretch; + } + + .cu-m-2xl { + margin: var(--canon-spacing-2xl); + } + + .cu-m-2xs { + margin: var(--canon-spacing-2xs); + } + + .cu-m-lg { + margin: var(--canon-spacing-lg); + } + + .cu-m-md { + margin: var(--canon-spacing-md); + } + + .cu-m-none { + margin: 0; + } + + .cu-m-sm { + margin: var(--canon-spacing-sm); + } + + .cu-m-xl { + margin: var(--canon-spacing-xl); + } + + .cu-m-xs { + margin: var(--canon-spacing-xs); + } + + .cu-mb-2xl { + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-mb-2xs { + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-mb-lg { + margin-bottom: var(--canon-spacing-lg); + } + + .cu-mb-md { + margin-bottom: var(--canon-spacing-md); + } + + .cu-mb-none { + margin-bottom: 0; + } + + .cu-mb-sm { + margin-bottom: var(--canon-spacing-sm); + } + + .cu-mb-xl { + margin-bottom: var(--canon-spacing-xl); + } + + .cu-mb-xs { + margin-bottom: var(--canon-spacing-xs); + } + + .cu-ml-2xl { + margin-left: var(--canon-spacing-2xl); + } + + .cu-ml-2xs { + margin-left: var(--canon-spacing-2xs); + } + + .cu-ml-lg { + margin-left: var(--canon-spacing-lg); + } + + .cu-ml-md { + margin-left: var(--canon-spacing-md); + } + + .cu-ml-none { + margin-left: 0; + } + + .cu-ml-sm { + margin-left: var(--canon-spacing-sm); + } + + .cu-ml-xl { + margin-left: var(--canon-spacing-xl); + } + + .cu-ml-xs { + margin-left: var(--canon-spacing-xs); + } + + .cu-mr-2xl { + margin-right: var(--canon-spacing-2xl); + } + + .cu-mr-2xs { + margin-right: var(--canon-spacing-2xs); + } + + .cu-mr-lg { + margin-right: var(--canon-spacing-lg); + } + + .cu-mr-md { + margin-right: var(--canon-spacing-md); + } + + .cu-mr-none { + margin-right: 0; + } + + .cu-mr-sm { + margin-right: var(--canon-spacing-sm); + } + + .cu-mr-xl { + margin-right: var(--canon-spacing-xl); + } + + .cu-mr-xs { + margin-right: var(--canon-spacing-xs); + } + + .cu-mt-2xl { + margin-top: var(--canon-spacing-2xl); + } + + .cu-mt-2xs { + margin-top: var(--canon-spacing-2xs); + } + + .cu-mt-lg { + margin-top: var(--canon-spacing-lg); + } + + .cu-mt-md { + margin-top: var(--canon-spacing-md); + } + + .cu-mt-none { + margin-top: 0; + } + + .cu-mt-sm { + margin-top: var(--canon-spacing-sm); + } + + .cu-mt-xl { + margin-top: var(--canon-spacing-xl); + } + + .cu-mt-xs { + margin-top: var(--canon-spacing-xs); + } + + .cu-mx-2xl { + margin-left: var(--canon-spacing-2xl); + margin-right: var(--canon-spacing-2xl); + } + + .cu-mx-2xs { + margin-left: var(--canon-spacing-2xs); + margin-right: var(--canon-spacing-2xs); + } + + .cu-mx-lg { + margin-left: var(--canon-spacing-lg); + margin-right: var(--canon-spacing-lg); + } + + .cu-mx-md { + margin-left: var(--canon-spacing-md); + margin-right: var(--canon-spacing-md); + } + + .cu-mx-none { + margin-left: 0; + margin-right: 0; + } + + .cu-mx-sm { + margin-left: var(--canon-spacing-sm); + margin-right: var(--canon-spacing-sm); + } + + .cu-mx-xl { + margin-left: var(--canon-spacing-xl); + margin-right: var(--canon-spacing-xl); + } + + .cu-mx-xs { + margin-left: var(--canon-spacing-xs); + margin-right: var(--canon-spacing-xs); + } + + .cu-my-2xl { + margin-top: var(--canon-spacing-2xl); + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-my-2xs { + margin-top: var(--canon-spacing-2xs); + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-my-lg { + margin-top: var(--canon-spacing-lg); + margin-bottom: var(--canon-spacing-lg); + } + + .cu-my-md { + margin-top: var(--canon-spacing-md); + margin-bottom: var(--canon-spacing-md); + } + + .cu-my-none { + margin-top: 0; + margin-bottom: 0; + } + + .cu-my-sm { + margin-top: var(--canon-spacing-sm); + margin-bottom: var(--canon-spacing-sm); + } + + .cu-my-xl { + margin-top: var(--canon-spacing-xl); + margin-bottom: var(--canon-spacing-xl); + } + + .cu-my-xs { + margin-top: var(--canon-spacing-xs); + margin-bottom: var(--canon-spacing-xs); + } + + .cu-p-2xl { + padding: var(--canon-spacing-2xl); + } + + .cu-p-2xs { + padding: var(--canon-spacing-2xs); + } + + .cu-p-lg { + padding: var(--canon-spacing-lg); + } + + .cu-p-md { + padding: var(--canon-spacing-md); + } + + .cu-p-none { + padding: 0; + } + + .cu-p-sm { + padding: var(--canon-spacing-sm); + } + + .cu-p-xl { + padding: var(--canon-spacing-xl); + } + + .cu-p-xs { + padding: var(--canon-spacing-xs); + } + + .cu-pb-2xl { + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-pb-2xs { + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-pb-lg { + padding-bottom: var(--canon-spacing-lg); + } + + .cu-pb-md { + padding-bottom: var(--canon-spacing-md); + } + + .cu-pb-none { + padding-bottom: 0; + } + + .cu-pb-sm { + padding-bottom: var(--canon-spacing-sm); + } + + .cu-pb-xl { + padding-bottom: var(--canon-spacing-xl); + } + + .cu-pb-xs { + padding-bottom: var(--canon-spacing-xs); + } + + .cu-pl-2xl { + padding-left: var(--canon-spacing-2xl); + } + + .cu-pl-2xs { + padding-left: var(--canon-spacing-2xs); + } + + .cu-pl-lg { + padding-left: var(--canon-spacing-lg); + } + + .cu-pl-md { + padding-left: var(--canon-spacing-md); + } + + .cu-pl-none { + padding-left: 0; + } + + .cu-pl-sm { + padding-left: var(--canon-spacing-sm); + } + + .cu-pl-xl { + padding-left: var(--canon-spacing-xl); + } + + .cu-pl-xs { + padding-left: var(--canon-spacing-xs); + } + + .cu-pr-2xl { + padding-right: var(--canon-spacing-2xl); + } + + .cu-pr-2xs { + padding-right: var(--canon-spacing-2xs); + } + + .cu-pr-lg { + padding-right: var(--canon-spacing-lg); + } + + .cu-pr-md { + padding-right: var(--canon-spacing-md); + } + + .cu-pr-none { + padding-right: 0; + } + + .cu-pr-sm { + padding-right: var(--canon-spacing-sm); + } + + .cu-pr-xl { + padding-right: var(--canon-spacing-xl); + } + + .cu-pr-xs { + padding-right: var(--canon-spacing-xs); + } + + .cu-pt-2xl { + padding-top: var(--canon-spacing-2xl); + } + + .cu-pt-2xs { + padding-top: var(--canon-spacing-2xs); + } + + .cu-pt-lg { + padding-top: var(--canon-spacing-lg); + } + + .cu-pt-md { + padding-top: var(--canon-spacing-md); + } + + .cu-pt-none { + padding-top: 0; + } + + .cu-pt-sm { + padding-top: var(--canon-spacing-sm); + } + + .cu-pt-xl { + padding-top: var(--canon-spacing-xl); + } + + .cu-pt-xs { + padding-top: var(--canon-spacing-xs); + } + + .cu-px-2xl { + padding-left: var(--canon-spacing-2xl); + padding-right: var(--canon-spacing-2xl); + } + + .cu-px-2xs { + padding-left: var(--canon-spacing-2xs); + padding-right: var(--canon-spacing-2xs); + } + + .cu-px-lg { + padding-left: var(--canon-spacing-lg); + padding-right: var(--canon-spacing-lg); + } + + .cu-px-md { + padding-left: var(--canon-spacing-md); + padding-right: var(--canon-spacing-md); + } + + .cu-px-none { + padding-left: 0; + padding-right: 0; + } + + .cu-px-sm { + padding-left: var(--canon-spacing-sm); + padding-right: var(--canon-spacing-sm); + } + + .cu-px-xl { + padding-left: var(--canon-spacing-xl); + padding-right: var(--canon-spacing-xl); + } + + .cu-px-xs { + padding-left: var(--canon-spacing-xs); + padding-right: var(--canon-spacing-xs); + } + + .cu-py-2xl { + padding-top: var(--canon-spacing-2xl); + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-py-2xs { + padding-top: var(--canon-spacing-2xs); + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-py-lg { + padding-top: var(--canon-spacing-lg); + padding-bottom: var(--canon-spacing-lg); + } + + .cu-py-md { + padding-top: var(--canon-spacing-md); + padding-bottom: var(--canon-spacing-md); + } + + .cu-py-none { + padding-top: 0; + padding-bottom: 0; + } + + .cu-py-sm { + padding-top: var(--canon-spacing-sm); + padding-bottom: var(--canon-spacing-sm); + } + + .cu-py-xl { + padding-top: var(--canon-spacing-xl); + padding-bottom: var(--canon-spacing-xl); + } + + .cu-py-xs { + padding-top: var(--canon-spacing-xs); + padding-bottom: var(--canon-spacing-xs); + } + + .cu-rounded-2xl { + border-radius: var(--canon-border-radius-2xl); + } + + .cu-rounded-2xs { + border-radius: var(--canon-border-radius-2xs); + } + + .cu-rounded-lg { + border-radius: var(--canon-border-radius-lg); + } + + .cu-rounded-md { + border-radius: var(--canon-border-radius-md); + } + + .cu-rounded-none { + border-radius: 0; + } + + .cu-rounded-sm { + border-radius: var(--canon-border-radius-sm); + } + + .cu-rounded-xl { + border-radius: var(--canon-border-radius-xl); + } + + .cu-rounded-xs { + border-radius: var(--canon-border-radius-xs); + } + + .cu-row-span-1 { + grid-row: span 1 / span 1; + } + + .cu-row-span-10 { + grid-row: span 10 / span 10; + } + + .cu-row-span-11 { + grid-row: span 11 / span 11; + } + + .cu-row-span-12 { + grid-row: span 12 / span 12; + } + + .cu-row-span-2 { + grid-row: span 2 / span 2; + } + + .cu-row-span-3 { + grid-row: span 3 / span 3; + } + + .cu-row-span-4 { + grid-row: span 4 / span 4; + } + + .cu-row-span-5 { + grid-row: span 5 / span 5; + } + + .cu-row-span-6 { + grid-row: span 6 / span 6; + } + + .cu-row-span-7 { + grid-row: span 7 / span 7; + } + + .cu-row-span-8 { + grid-row: span 8 / span 8; + } + + .cu-row-span-9 { + grid-row: span 9 / span 9; + } + + .cu-row-span-auto { + grid-row: span auto / span auto; + } + + .cu-wrap-reverse { + flex-wrap: wrap-reverse; + } + + @media (width >= 640px) { + .cu-sm-block { + display: block; + } + + .cu-sm-border-base { + border-color: var(--canon-border-base); + border-style: solid; + border-width: 1px; + } + + .cu-sm-border-error { + border-color: var(--canon-border-error); + border-style: solid; + border-width: 1px; + } + + .cu-sm-border-none { + border-width: 0; + border-color: #0000; + } + + .cu-sm-border-selected { + border-color: var(--canon-border-selected); + border-style: solid; + border-width: 1px; + } + + .cu-sm-border-warning { + border-color: var(--canon-border-warning); + border-style: solid; + border-width: 1px; + } + + .cu-sm-col-end-1 { + grid-column-end: 1; + } + + .cu-sm-col-end-10 { + grid-column-end: 10; + } + + .cu-sm-col-end-11 { + grid-column-end: 11; + } + + .cu-sm-col-end-12 { + grid-column-end: 12; + } + + .cu-sm-col-end-13 { + grid-column-end: 13; + } + + .cu-sm-col-end-2 { + grid-column-end: 2; + } + + .cu-sm-col-end-3 { + grid-column-end: 3; + } + + .cu-sm-col-end-4 { + grid-column-end: 4; + } + + .cu-sm-col-end-5 { + grid-column-end: 5; + } + + .cu-sm-col-end-6 { + grid-column-end: 6; + } + + .cu-sm-col-end-7 { + grid-column-end: 7; + } + + .cu-sm-col-end-8 { + grid-column-end: 8; + } + + .cu-sm-col-end-9 { + grid-column-end: 9; + } + + .cu-sm-col-end-auto { + grid-column-end: auto; + } + + .cu-sm-col-span-1 { + grid-column: span 1 / span 1; + } + + .cu-sm-col-span-10 { + grid-column: span 10 / span 10; + } + + .cu-sm-col-span-11 { + grid-column: span 11 / span 11; + } + + .cu-sm-col-span-12 { + grid-column: span 12 / span 12; + } + + .cu-sm-col-span-2 { + grid-column: span 2 / span 2; + } + + .cu-sm-col-span-3 { + grid-column: span 3 / span 3; + } + + .cu-sm-col-span-4 { + grid-column: span 4 / span 4; + } + + .cu-sm-col-span-5 { + grid-column: span 5 / span 5; + } + + .cu-sm-col-span-6 { + grid-column: span 6 / span 6; + } + + .cu-sm-col-span-7 { + grid-column: span 7 / span 7; + } + + .cu-sm-col-span-8 { + grid-column: span 8 / span 8; + } + + .cu-sm-col-span-9 { + grid-column: span 9 / span 9; + } + + .cu-sm-col-span-auto { + grid-column: span auto / span auto; + } + + .cu-sm-col-start-1 { + grid-column-start: 1; + } + + .cu-sm-col-start-10 { + grid-column-start: 10; + } + + .cu-sm-col-start-11 { + grid-column-start: 11; + } + + .cu-sm-col-start-12 { + grid-column-start: 12; + } + + .cu-sm-col-start-13 { + grid-column-start: 13; + } + + .cu-sm-col-start-2 { + grid-column-start: 2; + } + + .cu-sm-col-start-3 { + grid-column-start: 3; + } + + .cu-sm-col-start-4 { + grid-column-start: 4; + } + + .cu-sm-col-start-5 { + grid-column-start: 5; + } + + .cu-sm-col-start-6 { + grid-column-start: 6; + } + + .cu-sm-col-start-7 { + grid-column-start: 7; + } + + .cu-sm-col-start-8 { + grid-column-start: 8; + } + + .cu-sm-col-start-9 { + grid-column-start: 9; + } + + .cu-sm-col-start-auto { + grid-column-start: auto; + } + + .cu-sm-flex { + display: flex; + } + + .cu-sm-flex-col { + flex-direction: column; + } + + .cu-sm-flex-nowrap { + flex-wrap: nowrap; + } + + .cu-sm-flex-row { + flex-direction: row; + } + + .cu-sm-flex-wrap { + flex-wrap: wrap; + } + + .cu-sm-flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .cu-sm-gap-2xl { + gap: var(--canon-spacing-2xl); + } + + .cu-sm-gap-lg { + gap: var(--canon-spacing-lg); + } + + .cu-sm-gap-md { + gap: var(--canon-spacing-md); + } + + .cu-sm-gap-none { + gap: 0; + } + + .cu-sm-gap-sm { + gap: var(--canon-spacing-sm); + } + + .cu-sm-gap-xl { + gap: var(--canon-spacing-xl); + } + + .cu-sm-gap-xs { + gap: var(--canon-spacing-xs); + } + + .cu-sm-grid { + display: grid; + } + + .cu-sm-grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + + .cu-sm-grid-cols-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + + .cu-sm-hidden { + display: none; + } + + .cu-sm-inline { + display: inline; + } + + .cu-sm-inline-block { + display: inline-block; + } + + .cu-sm-items-center { + align-items: center; + } + + .cu-sm-items-end { + align-items: flex-end; + } + + .cu-sm-items-start { + align-items: flex-start; + } + + .cu-sm-items-stretch { + align-items: stretch; + } + + .cu-sm-justify-around { + justify-content: space-around; + } + + .cu-sm-justify-between { + justify-content: space-between; + } + + .cu-sm-justify-center { + justify-content: center; + } + + .cu-sm-justify-end { + justify-content: flex-end; + } + + .cu-sm-justify-start { + justify-content: flex-start; + } + + .cu-sm-justify-stretch { + justify-content: stretch; + } + + .cu-sm-m-2xl { + margin: var(--canon-spacing-2xl); + } + + .cu-sm-m-2xs { + margin: var(--canon-spacing-2xs); + } + + .cu-sm-m-lg { + margin: var(--canon-spacing-lg); + } + + .cu-sm-m-md { + margin: var(--canon-spacing-md); + } + + .cu-sm-m-none { + margin: 0; + } + + .cu-sm-m-sm { + margin: var(--canon-spacing-sm); + } + + .cu-sm-m-xl { + margin: var(--canon-spacing-xl); + } + + .cu-sm-m-xs { + margin: var(--canon-spacing-xs); + } + + .cu-sm-mb-2xl { + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-sm-mb-2xs { + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-sm-mb-lg { + margin-bottom: var(--canon-spacing-lg); + } + + .cu-sm-mb-md { + margin-bottom: var(--canon-spacing-md); + } + + .cu-sm-mb-none { + margin-bottom: 0; + } + + .cu-sm-mb-sm { + margin-bottom: var(--canon-spacing-sm); + } + + .cu-sm-mb-xl { + margin-bottom: var(--canon-spacing-xl); + } + + .cu-sm-mb-xs { + margin-bottom: var(--canon-spacing-xs); + } + + .cu-sm-ml-2xl { + margin-left: var(--canon-spacing-2xl); + } + + .cu-sm-ml-2xs { + margin-left: var(--canon-spacing-2xs); + } + + .cu-sm-ml-lg { + margin-left: var(--canon-spacing-lg); + } + + .cu-sm-ml-md { + margin-left: var(--canon-spacing-md); + } + + .cu-sm-ml-none { + margin-left: 0; + } + + .cu-sm-ml-sm { + margin-left: var(--canon-spacing-sm); + } + + .cu-sm-ml-xl { + margin-left: var(--canon-spacing-xl); + } + + .cu-sm-ml-xs { + margin-left: var(--canon-spacing-xs); + } + + .cu-sm-mr-2xl { + margin-right: var(--canon-spacing-2xl); + } + + .cu-sm-mr-2xs { + margin-right: var(--canon-spacing-2xs); + } + + .cu-sm-mr-lg { + margin-right: var(--canon-spacing-lg); + } + + .cu-sm-mr-md { + margin-right: var(--canon-spacing-md); + } + + .cu-sm-mr-none { + margin-right: 0; + } + + .cu-sm-mr-sm { + margin-right: var(--canon-spacing-sm); + } + + .cu-sm-mr-xl { + margin-right: var(--canon-spacing-xl); + } + + .cu-sm-mr-xs { + margin-right: var(--canon-spacing-xs); + } + + .cu-sm-mt-2xl { + margin-top: var(--canon-spacing-2xl); + } + + .cu-sm-mt-2xs { + margin-top: var(--canon-spacing-2xs); + } + + .cu-sm-mt-lg { + margin-top: var(--canon-spacing-lg); + } + + .cu-sm-mt-md { + margin-top: var(--canon-spacing-md); + } + + .cu-sm-mt-none { + margin-top: 0; + } + + .cu-sm-mt-sm { + margin-top: var(--canon-spacing-sm); + } + + .cu-sm-mt-xl { + margin-top: var(--canon-spacing-xl); + } + + .cu-sm-mt-xs { + margin-top: var(--canon-spacing-xs); + } + + .cu-sm-mx-2xl { + margin-left: var(--canon-spacing-2xl); + margin-right: var(--canon-spacing-2xl); + } + + .cu-sm-mx-2xs { + margin-left: var(--canon-spacing-2xs); + margin-right: var(--canon-spacing-2xs); + } + + .cu-sm-mx-lg { + margin-left: var(--canon-spacing-lg); + margin-right: var(--canon-spacing-lg); + } + + .cu-sm-mx-md { + margin-left: var(--canon-spacing-md); + margin-right: var(--canon-spacing-md); + } + + .cu-sm-mx-none { + margin-left: 0; + margin-right: 0; + } + + .cu-sm-mx-sm { + margin-left: var(--canon-spacing-sm); + margin-right: var(--canon-spacing-sm); + } + + .cu-sm-mx-xl { + margin-left: var(--canon-spacing-xl); + margin-right: var(--canon-spacing-xl); + } + + .cu-sm-mx-xs { + margin-left: var(--canon-spacing-xs); + margin-right: var(--canon-spacing-xs); + } + + .cu-sm-my-2xl { + margin-top: var(--canon-spacing-2xl); + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-sm-my-2xs { + margin-top: var(--canon-spacing-2xs); + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-sm-my-lg { + margin-top: var(--canon-spacing-lg); + margin-bottom: var(--canon-spacing-lg); + } + + .cu-sm-my-md { + margin-top: var(--canon-spacing-md); + margin-bottom: var(--canon-spacing-md); + } + + .cu-sm-my-none { + margin-top: 0; + margin-bottom: 0; + } + + .cu-sm-my-sm { + margin-top: var(--canon-spacing-sm); + margin-bottom: var(--canon-spacing-sm); + } + + .cu-sm-my-xl { + margin-top: var(--canon-spacing-xl); + margin-bottom: var(--canon-spacing-xl); + } + + .cu-sm-my-xs { + margin-top: var(--canon-spacing-xs); + margin-bottom: var(--canon-spacing-xs); + } + + .cu-sm-p-2xl { + padding: var(--canon-spacing-2xl); + } + + .cu-sm-p-2xs { + padding: var(--canon-spacing-2xs); + } + + .cu-sm-p-lg { + padding: var(--canon-spacing-lg); + } + + .cu-sm-p-md { + padding: var(--canon-spacing-md); + } + + .cu-sm-p-none { + padding: 0; + } + + .cu-sm-p-sm { + padding: var(--canon-spacing-sm); + } + + .cu-sm-p-xl { + padding: var(--canon-spacing-xl); + } + + .cu-sm-p-xs { + padding: var(--canon-spacing-xs); + } + + .cu-sm-pb-2xl { + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-sm-pb-2xs { + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-sm-pb-lg { + padding-bottom: var(--canon-spacing-lg); + } + + .cu-sm-pb-md { + padding-bottom: var(--canon-spacing-md); + } + + .cu-sm-pb-none { + padding-bottom: 0; + } + + .cu-sm-pb-sm { + padding-bottom: var(--canon-spacing-sm); + } + + .cu-sm-pb-xl { + padding-bottom: var(--canon-spacing-xl); + } + + .cu-sm-pb-xs { + padding-bottom: var(--canon-spacing-xs); + } + + .cu-sm-pl-2xl { + padding-left: var(--canon-spacing-2xl); + } + + .cu-sm-pl-2xs { + padding-left: var(--canon-spacing-2xs); + } + + .cu-sm-pl-lg { + padding-left: var(--canon-spacing-lg); + } + + .cu-sm-pl-md { + padding-left: var(--canon-spacing-md); + } + + .cu-sm-pl-none { + padding-left: 0; + } + + .cu-sm-pl-sm { + padding-left: var(--canon-spacing-sm); + } + + .cu-sm-pl-xl { + padding-left: var(--canon-spacing-xl); + } + + .cu-sm-pl-xs { + padding-left: var(--canon-spacing-xs); + } + + .cu-sm-pr-2xl { + padding-right: var(--canon-spacing-2xl); + } + + .cu-sm-pr-2xs { + padding-right: var(--canon-spacing-2xs); + } + + .cu-sm-pr-lg { + padding-right: var(--canon-spacing-lg); + } + + .cu-sm-pr-md { + padding-right: var(--canon-spacing-md); + } + + .cu-sm-pr-none { + padding-right: 0; + } + + .cu-sm-pr-sm { + padding-right: var(--canon-spacing-sm); + } + + .cu-sm-pr-xl { + padding-right: var(--canon-spacing-xl); + } + + .cu-sm-pr-xs { + padding-right: var(--canon-spacing-xs); + } + + .cu-sm-pt-2xl { + padding-top: var(--canon-spacing-2xl); + } + + .cu-sm-pt-2xs { + padding-top: var(--canon-spacing-2xs); + } + + .cu-sm-pt-lg { + padding-top: var(--canon-spacing-lg); + } + + .cu-sm-pt-md { + padding-top: var(--canon-spacing-md); + } + + .cu-sm-pt-none { + padding-top: 0; + } + + .cu-sm-pt-sm { + padding-top: var(--canon-spacing-sm); + } + + .cu-sm-pt-xl { + padding-top: var(--canon-spacing-xl); + } + + .cu-sm-pt-xs { + padding-top: var(--canon-spacing-xs); + } + + .cu-sm-px-2xl { + padding-left: var(--canon-spacing-2xl); + padding-right: var(--canon-spacing-2xl); + } + + .cu-sm-px-2xs { + padding-left: var(--canon-spacing-2xs); + padding-right: var(--canon-spacing-2xs); + } + + .cu-sm-px-lg { + padding-left: var(--canon-spacing-lg); + padding-right: var(--canon-spacing-lg); + } + + .cu-sm-px-md { + padding-left: var(--canon-spacing-md); + padding-right: var(--canon-spacing-md); + } + + .cu-sm-px-none { + padding-left: 0; + padding-right: 0; + } + + .cu-sm-px-sm { + padding-left: var(--canon-spacing-sm); + padding-right: var(--canon-spacing-sm); + } + + .cu-sm-px-xl { + padding-left: var(--canon-spacing-xl); + padding-right: var(--canon-spacing-xl); + } + + .cu-sm-px-xs { + padding-left: var(--canon-spacing-xs); + padding-right: var(--canon-spacing-xs); + } + + .cu-sm-py-2xl { + padding-top: var(--canon-spacing-2xl); + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-sm-py-2xs { + padding-top: var(--canon-spacing-2xs); + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-sm-py-lg { + padding-top: var(--canon-spacing-lg); + padding-bottom: var(--canon-spacing-lg); + } + + .cu-sm-py-md { + padding-top: var(--canon-spacing-md); + padding-bottom: var(--canon-spacing-md); + } + + .cu-sm-py-none { + padding-top: 0; + padding-bottom: 0; + } + + .cu-sm-py-sm { + padding-top: var(--canon-spacing-sm); + padding-bottom: var(--canon-spacing-sm); + } + + .cu-sm-py-xl { + padding-top: var(--canon-spacing-xl); + padding-bottom: var(--canon-spacing-xl); + } + + .cu-sm-py-xs { + padding-top: var(--canon-spacing-xs); + padding-bottom: var(--canon-spacing-xs); + } + + .cu-sm-rounded-2xl { + border-radius: var(--canon-border-radius-2xl); + } + + .cu-sm-rounded-2xs { + border-radius: var(--canon-border-radius-2xs); + } + + .cu-sm-rounded-lg { + border-radius: var(--canon-border-radius-lg); + } + + .cu-sm-rounded-md { + border-radius: var(--canon-border-radius-md); + } + + .cu-sm-rounded-none { + border-radius: 0; + } + + .cu-sm-rounded-sm { + border-radius: var(--canon-border-radius-sm); + } + + .cu-sm-rounded-xl { + border-radius: var(--canon-border-radius-xl); + } + + .cu-sm-rounded-xs { + border-radius: var(--canon-border-radius-xs); + } + + .cu-sm-row-span-1 { + grid-row: span 1 / span 1; + } + + .cu-sm-row-span-10 { + grid-row: span 10 / span 10; + } + + .cu-sm-row-span-11 { + grid-row: span 11 / span 11; + } + + .cu-sm-row-span-12 { + grid-row: span 12 / span 12; + } + + .cu-sm-row-span-2 { + grid-row: span 2 / span 2; + } + + .cu-sm-row-span-3 { + grid-row: span 3 / span 3; + } + + .cu-sm-row-span-4 { + grid-row: span 4 / span 4; + } + + .cu-sm-row-span-5 { + grid-row: span 5 / span 5; + } + + .cu-sm-row-span-6 { + grid-row: span 6 / span 6; + } + + .cu-sm-row-span-7 { + grid-row: span 7 / span 7; + } + + .cu-sm-row-span-8 { + grid-row: span 8 / span 8; + } + + .cu-sm-row-span-9 { + grid-row: span 9 / span 9; + } + + .cu-sm-row-span-auto { + grid-row: span auto / span auto; + } + + .cu-sm-wrap-reverse { + flex-wrap: wrap-reverse; + } + } + + @media (width >= 768px) { + .cu-md-block { + display: block; + } + + .cu-md-border-base { + border-color: var(--canon-border-base); + border-style: solid; + border-width: 1px; + } + + .cu-md-border-error { + border-color: var(--canon-border-error); + border-style: solid; + border-width: 1px; + } + + .cu-md-border-none { + border-width: 0; + border-color: #0000; + } + + .cu-md-border-selected { + border-color: var(--canon-border-selected); + border-style: solid; + border-width: 1px; + } + + .cu-md-border-warning { + border-color: var(--canon-border-warning); + border-style: solid; + border-width: 1px; + } + + .cu-md-col-end-1 { + grid-column-end: 1; + } + + .cu-md-col-end-10 { + grid-column-end: 10; + } + + .cu-md-col-end-11 { + grid-column-end: 11; + } + + .cu-md-col-end-12 { + grid-column-end: 12; + } + + .cu-md-col-end-13 { + grid-column-end: 13; + } + + .cu-md-col-end-2 { + grid-column-end: 2; + } + + .cu-md-col-end-3 { + grid-column-end: 3; + } + + .cu-md-col-end-4 { + grid-column-end: 4; + } + + .cu-md-col-end-5 { + grid-column-end: 5; + } + + .cu-md-col-end-6 { + grid-column-end: 6; + } + + .cu-md-col-end-7 { + grid-column-end: 7; + } + + .cu-md-col-end-8 { + grid-column-end: 8; + } + + .cu-md-col-end-9 { + grid-column-end: 9; + } + + .cu-md-col-end-auto { + grid-column-end: auto; + } + + .cu-md-col-span-1 { + grid-column: span 1 / span 1; + } + + .cu-md-col-span-10 { + grid-column: span 10 / span 10; + } + + .cu-md-col-span-11 { + grid-column: span 11 / span 11; + } + + .cu-md-col-span-12 { + grid-column: span 12 / span 12; + } + + .cu-md-col-span-2 { + grid-column: span 2 / span 2; + } + + .cu-md-col-span-3 { + grid-column: span 3 / span 3; + } + + .cu-md-col-span-4 { + grid-column: span 4 / span 4; + } + + .cu-md-col-span-5 { + grid-column: span 5 / span 5; + } + + .cu-md-col-span-6 { + grid-column: span 6 / span 6; + } + + .cu-md-col-span-7 { + grid-column: span 7 / span 7; + } + + .cu-md-col-span-8 { + grid-column: span 8 / span 8; + } + + .cu-md-col-span-9 { + grid-column: span 9 / span 9; + } + + .cu-md-col-span-auto { + grid-column: span auto / span auto; + } + + .cu-md-col-start-1 { + grid-column-start: 1; + } + + .cu-md-col-start-10 { + grid-column-start: 10; + } + + .cu-md-col-start-11 { + grid-column-start: 11; + } + + .cu-md-col-start-12 { + grid-column-start: 12; + } + + .cu-md-col-start-13 { + grid-column-start: 13; + } + + .cu-md-col-start-2 { + grid-column-start: 2; + } + + .cu-md-col-start-3 { + grid-column-start: 3; + } + + .cu-md-col-start-4 { + grid-column-start: 4; + } + + .cu-md-col-start-5 { + grid-column-start: 5; + } + + .cu-md-col-start-6 { + grid-column-start: 6; + } + + .cu-md-col-start-7 { + grid-column-start: 7; + } + + .cu-md-col-start-8 { + grid-column-start: 8; + } + + .cu-md-col-start-9 { + grid-column-start: 9; + } + + .cu-md-col-start-auto { + grid-column-start: auto; + } + + .cu-md-flex { + display: flex; + } + + .cu-md-flex-col { + flex-direction: column; + } + + .cu-md-flex-nowrap { + flex-wrap: nowrap; + } + + .cu-md-flex-row { + flex-direction: row; + } + + .cu-md-flex-wrap { + flex-wrap: wrap; + } + + .cu-md-flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .cu-md-gap-2xl { + gap: var(--canon-spacing-2xl); + } + + .cu-md-gap-lg { + gap: var(--canon-spacing-lg); + } + + .cu-md-gap-md { + gap: var(--canon-spacing-md); + } + + .cu-md-gap-none { + gap: 0; + } + + .cu-md-gap-sm { + gap: var(--canon-spacing-sm); + } + + .cu-md-gap-xl { + gap: var(--canon-spacing-xl); + } + + .cu-md-gap-xs { + gap: var(--canon-spacing-xs); + } + + .cu-md-grid { + display: grid; + } + + .cu-md-grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + + .cu-md-grid-cols-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + + .cu-md-grid-cols-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + + .cu-md-grid-cols-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + + .cu-md-grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .cu-md-grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .cu-md-grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .cu-md-grid-cols-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + + .cu-md-grid-cols-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + + .cu-md-grid-cols-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + + .cu-md-grid-cols-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + .cu-md-grid-cols-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + + .cu-md-grid-cols-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + + .cu-md-hidden { + display: none; + } + + .cu-md-inline { + display: inline; + } + + .cu-md-inline-block { + display: inline-block; + } + + .cu-md-items-center { + align-items: center; + } + + .cu-md-items-end { + align-items: flex-end; + } + + .cu-md-items-start { + align-items: flex-start; + } + + .cu-md-items-stretch { + align-items: stretch; + } + + .cu-md-justify-around { + justify-content: space-around; + } + + .cu-md-justify-between { + justify-content: space-between; + } + + .cu-md-justify-center { + justify-content: center; + } + + .cu-md-justify-end { + justify-content: flex-end; + } + + .cu-md-justify-start { + justify-content: flex-start; + } + + .cu-md-justify-stretch { + justify-content: stretch; + } + + .cu-md-m-2xl { + margin: var(--canon-spacing-2xl); + } + + .cu-md-m-2xs { + margin: var(--canon-spacing-2xs); + } + + .cu-md-m-lg { + margin: var(--canon-spacing-lg); + } + + .cu-md-m-md { + margin: var(--canon-spacing-md); + } + + .cu-md-m-none { + margin: 0; + } + + .cu-md-m-sm { + margin: var(--canon-spacing-sm); + } + + .cu-md-m-xl { + margin: var(--canon-spacing-xl); + } + + .cu-md-m-xs { + margin: var(--canon-spacing-xs); + } + + .cu-md-mb-2xl { + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-md-mb-2xs { + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-md-mb-lg { + margin-bottom: var(--canon-spacing-lg); + } + + .cu-md-mb-md { + margin-bottom: var(--canon-spacing-md); + } + + .cu-md-mb-none { + margin-bottom: 0; + } + + .cu-md-mb-sm { + margin-bottom: var(--canon-spacing-sm); + } + + .cu-md-mb-xl { + margin-bottom: var(--canon-spacing-xl); + } + + .cu-md-mb-xs { + margin-bottom: var(--canon-spacing-xs); + } + + .cu-md-ml-2xl { + margin-left: var(--canon-spacing-2xl); + } + + .cu-md-ml-2xs { + margin-left: var(--canon-spacing-2xs); + } + + .cu-md-ml-lg { + margin-left: var(--canon-spacing-lg); + } + + .cu-md-ml-md { + margin-left: var(--canon-spacing-md); + } + + .cu-md-ml-none { + margin-left: 0; + } + + .cu-md-ml-sm { + margin-left: var(--canon-spacing-sm); + } + + .cu-md-ml-xl { + margin-left: var(--canon-spacing-xl); + } + + .cu-md-ml-xs { + margin-left: var(--canon-spacing-xs); + } + + .cu-md-mr-2xl { + margin-right: var(--canon-spacing-2xl); + } + + .cu-md-mr-2xs { + margin-right: var(--canon-spacing-2xs); + } + + .cu-md-mr-lg { + margin-right: var(--canon-spacing-lg); + } + + .cu-md-mr-md { + margin-right: var(--canon-spacing-md); + } + + .cu-md-mr-none { + margin-right: 0; + } + + .cu-md-mr-sm { + margin-right: var(--canon-spacing-sm); + } + + .cu-md-mr-xl { + margin-right: var(--canon-spacing-xl); + } + + .cu-md-mr-xs { + margin-right: var(--canon-spacing-xs); + } + + .cu-md-mt-2xl { + margin-top: var(--canon-spacing-2xl); + } + + .cu-md-mt-2xs { + margin-top: var(--canon-spacing-2xs); + } + + .cu-md-mt-lg { + margin-top: var(--canon-spacing-lg); + } + + .cu-md-mt-md { + margin-top: var(--canon-spacing-md); + } + + .cu-md-mt-none { + margin-top: 0; + } + + .cu-md-mt-sm { + margin-top: var(--canon-spacing-sm); + } + + .cu-md-mt-xl { + margin-top: var(--canon-spacing-xl); + } + + .cu-md-mt-xs { + margin-top: var(--canon-spacing-xs); + } + + .cu-md-mx-2xl { + margin-left: var(--canon-spacing-2xl); + margin-right: var(--canon-spacing-2xl); + } + + .cu-md-mx-2xs { + margin-left: var(--canon-spacing-2xs); + margin-right: var(--canon-spacing-2xs); + } + + .cu-md-mx-lg { + margin-left: var(--canon-spacing-lg); + margin-right: var(--canon-spacing-lg); + } + + .cu-md-mx-md { + margin-left: var(--canon-spacing-md); + margin-right: var(--canon-spacing-md); + } + + .cu-md-mx-none { + margin-left: 0; + margin-right: 0; + } + + .cu-md-mx-sm { + margin-left: var(--canon-spacing-sm); + margin-right: var(--canon-spacing-sm); + } + + .cu-md-mx-xl { + margin-left: var(--canon-spacing-xl); + margin-right: var(--canon-spacing-xl); + } + + .cu-md-mx-xs { + margin-left: var(--canon-spacing-xs); + margin-right: var(--canon-spacing-xs); + } + + .cu-md-my-2xl { + margin-top: var(--canon-spacing-2xl); + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-md-my-2xs { + margin-top: var(--canon-spacing-2xs); + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-md-my-lg { + margin-top: var(--canon-spacing-lg); + margin-bottom: var(--canon-spacing-lg); + } + + .cu-md-my-md { + margin-top: var(--canon-spacing-md); + margin-bottom: var(--canon-spacing-md); + } + + .cu-md-my-none { + margin-top: 0; + margin-bottom: 0; + } + + .cu-md-my-sm { + margin-top: var(--canon-spacing-sm); + margin-bottom: var(--canon-spacing-sm); + } + + .cu-md-my-xl { + margin-top: var(--canon-spacing-xl); + margin-bottom: var(--canon-spacing-xl); + } + + .cu-md-my-xs { + margin-top: var(--canon-spacing-xs); + margin-bottom: var(--canon-spacing-xs); + } + + .cu-md-p-2xl { + padding: var(--canon-spacing-2xl); + } + + .cu-md-p-2xs { + padding: var(--canon-spacing-2xs); + } + + .cu-md-p-lg { + padding: var(--canon-spacing-lg); + } + + .cu-md-p-md { + padding: var(--canon-spacing-md); + } + + .cu-md-p-none { + padding: 0; + } + + .cu-md-p-sm { + padding: var(--canon-spacing-sm); + } + + .cu-md-p-xl { + padding: var(--canon-spacing-xl); + } + + .cu-md-p-xs { + padding: var(--canon-spacing-xs); + } + + .cu-md-pb-2xl { + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-md-pb-2xs { + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-md-pb-lg { + padding-bottom: var(--canon-spacing-lg); + } + + .cu-md-pb-md { + padding-bottom: var(--canon-spacing-md); + } + + .cu-md-pb-none { + padding-bottom: 0; + } + + .cu-md-pb-sm { + padding-bottom: var(--canon-spacing-sm); + } + + .cu-md-pb-xl { + padding-bottom: var(--canon-spacing-xl); + } + + .cu-md-pb-xs { + padding-bottom: var(--canon-spacing-xs); + } + + .cu-md-pl-2xl { + padding-left: var(--canon-spacing-2xl); + } + + .cu-md-pl-2xs { + padding-left: var(--canon-spacing-2xs); + } + + .cu-md-pl-lg { + padding-left: var(--canon-spacing-lg); + } + + .cu-md-pl-md { + padding-left: var(--canon-spacing-md); + } + + .cu-md-pl-none { + padding-left: 0; + } + + .cu-md-pl-sm { + padding-left: var(--canon-spacing-sm); + } + + .cu-md-pl-xl { + padding-left: var(--canon-spacing-xl); + } + + .cu-md-pl-xs { + padding-left: var(--canon-spacing-xs); + } + + .cu-md-pr-2xl { + padding-right: var(--canon-spacing-2xl); + } + + .cu-md-pr-2xs { + padding-right: var(--canon-spacing-2xs); + } + + .cu-md-pr-lg { + padding-right: var(--canon-spacing-lg); + } + + .cu-md-pr-md { + padding-right: var(--canon-spacing-md); + } + + .cu-md-pr-none { + padding-right: 0; + } + + .cu-md-pr-sm { + padding-right: var(--canon-spacing-sm); + } + + .cu-md-pr-xl { + padding-right: var(--canon-spacing-xl); + } + + .cu-md-pr-xs { + padding-right: var(--canon-spacing-xs); + } + + .cu-md-pt-2xl { + padding-top: var(--canon-spacing-2xl); + } + + .cu-md-pt-2xs { + padding-top: var(--canon-spacing-2xs); + } + + .cu-md-pt-lg { + padding-top: var(--canon-spacing-lg); + } + + .cu-md-pt-md { + padding-top: var(--canon-spacing-md); + } + + .cu-md-pt-none { + padding-top: 0; + } + + .cu-md-pt-sm { + padding-top: var(--canon-spacing-sm); + } + + .cu-md-pt-xl { + padding-top: var(--canon-spacing-xl); + } + + .cu-md-pt-xs { + padding-top: var(--canon-spacing-xs); + } + + .cu-md-px-2xl { + padding-left: var(--canon-spacing-2xl); + padding-right: var(--canon-spacing-2xl); + } + + .cu-md-px-2xs { + padding-left: var(--canon-spacing-2xs); + padding-right: var(--canon-spacing-2xs); + } + + .cu-md-px-lg { + padding-left: var(--canon-spacing-lg); + padding-right: var(--canon-spacing-lg); + } + + .cu-md-px-md { + padding-left: var(--canon-spacing-md); + padding-right: var(--canon-spacing-md); + } + + .cu-md-px-none { + padding-left: 0; + padding-right: 0; + } + + .cu-md-px-sm { + padding-left: var(--canon-spacing-sm); + padding-right: var(--canon-spacing-sm); + } + + .cu-md-px-xl { + padding-left: var(--canon-spacing-xl); + padding-right: var(--canon-spacing-xl); + } + + .cu-md-px-xs { + padding-left: var(--canon-spacing-xs); + padding-right: var(--canon-spacing-xs); + } + + .cu-md-py-2xl { + padding-top: var(--canon-spacing-2xl); + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-md-py-2xs { + padding-top: var(--canon-spacing-2xs); + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-md-py-lg { + padding-top: var(--canon-spacing-lg); + padding-bottom: var(--canon-spacing-lg); + } + + .cu-md-py-md { + padding-top: var(--canon-spacing-md); + padding-bottom: var(--canon-spacing-md); + } + + .cu-md-py-none { + padding-top: 0; + padding-bottom: 0; + } + + .cu-md-py-sm { + padding-top: var(--canon-spacing-sm); + padding-bottom: var(--canon-spacing-sm); + } + + .cu-md-py-xl { + padding-top: var(--canon-spacing-xl); + padding-bottom: var(--canon-spacing-xl); + } + + .cu-md-py-xs { + padding-top: var(--canon-spacing-xs); + padding-bottom: var(--canon-spacing-xs); + } + + .cu-md-rounded-2xl { + border-radius: var(--canon-border-radius-2xl); + } + + .cu-md-rounded-2xs { + border-radius: var(--canon-border-radius-2xs); + } + + .cu-md-rounded-lg { + border-radius: var(--canon-border-radius-lg); + } + + .cu-md-rounded-md { + border-radius: var(--canon-border-radius-md); + } + + .cu-md-rounded-none { + border-radius: 0; + } + + .cu-md-rounded-sm { + border-radius: var(--canon-border-radius-sm); + } + + .cu-md-rounded-xl { + border-radius: var(--canon-border-radius-xl); + } + + .cu-md-rounded-xs { + border-radius: var(--canon-border-radius-xs); + } + + .cu-md-row-span-1 { + grid-row: span 1 / span 1; + } + + .cu-md-row-span-10 { + grid-row: span 10 / span 10; + } + + .cu-md-row-span-11 { + grid-row: span 11 / span 11; + } + + .cu-md-row-span-12 { + grid-row: span 12 / span 12; + } + + .cu-md-row-span-2 { + grid-row: span 2 / span 2; + } + + .cu-md-row-span-3 { + grid-row: span 3 / span 3; + } + + .cu-md-row-span-4 { + grid-row: span 4 / span 4; + } + + .cu-md-row-span-5 { + grid-row: span 5 / span 5; + } + + .cu-md-row-span-6 { + grid-row: span 6 / span 6; + } + + .cu-md-row-span-7 { + grid-row: span 7 / span 7; + } + + .cu-md-row-span-8 { + grid-row: span 8 / span 8; + } + + .cu-md-row-span-9 { + grid-row: span 9 / span 9; + } + + .cu-md-row-span-auto { + grid-row: span auto / span auto; + } + + .cu-md-wrap-reverse { + flex-wrap: wrap-reverse; + } + } + + @media (width >= 1024px) { + .cu-lg-block { + display: block; + } + + .cu-lg-border-base { + border-color: var(--canon-border-base); + border-style: solid; + border-width: 1px; + } + + .cu-lg-border-error { + border-color: var(--canon-border-error); + border-style: solid; + border-width: 1px; + } + + .cu-lg-border-none { + border-width: 0; + border-color: #0000; + } + + .cu-lg-border-selected { + border-color: var(--canon-border-selected); + border-style: solid; + border-width: 1px; + } + + .cu-lg-border-warning { + border-color: var(--canon-border-warning); + border-style: solid; + border-width: 1px; + } + + .cu-lg-col-end-1 { + grid-column-end: 1; + } + + .cu-lg-col-end-10 { + grid-column-end: 10; + } + + .cu-lg-col-end-11 { + grid-column-end: 11; + } + + .cu-lg-col-end-12 { + grid-column-end: 12; + } + + .cu-lg-col-end-13 { + grid-column-end: 13; + } + + .cu-lg-col-end-2 { + grid-column-end: 2; + } + + .cu-lg-col-end-3 { + grid-column-end: 3; + } + + .cu-lg-col-end-4 { + grid-column-end: 4; + } + + .cu-lg-col-end-5 { + grid-column-end: 5; + } + + .cu-lg-col-end-6 { + grid-column-end: 6; + } + + .cu-lg-col-end-7 { + grid-column-end: 7; + } + + .cu-lg-col-end-8 { + grid-column-end: 8; + } + + .cu-lg-col-end-9 { + grid-column-end: 9; + } + + .cu-lg-col-end-auto { + grid-column-end: auto; + } + + .cu-lg-col-span-1 { + grid-column: span 1 / span 1; + } + + .cu-lg-col-span-10 { + grid-column: span 10 / span 10; + } + + .cu-lg-col-span-11 { + grid-column: span 11 / span 11; + } + + .cu-lg-col-span-12 { + grid-column: span 12 / span 12; + } + + .cu-lg-col-span-2 { + grid-column: span 2 / span 2; + } + + .cu-lg-col-span-3 { + grid-column: span 3 / span 3; + } + + .cu-lg-col-span-4 { + grid-column: span 4 / span 4; + } + + .cu-lg-col-span-5 { + grid-column: span 5 / span 5; + } + + .cu-lg-col-span-6 { + grid-column: span 6 / span 6; + } + + .cu-lg-col-span-7 { + grid-column: span 7 / span 7; + } + + .cu-lg-col-span-8 { + grid-column: span 8 / span 8; + } + + .cu-lg-col-span-9 { + grid-column: span 9 / span 9; + } + + .cu-lg-col-span-auto { + grid-column: span auto / span auto; + } + + .cu-lg-col-start-1 { + grid-column-start: 1; + } + + .cu-lg-col-start-10 { + grid-column-start: 10; + } + + .cu-lg-col-start-11 { + grid-column-start: 11; + } + + .cu-lg-col-start-12 { + grid-column-start: 12; + } + + .cu-lg-col-start-13 { + grid-column-start: 13; + } + + .cu-lg-col-start-2 { + grid-column-start: 2; + } + + .cu-lg-col-start-3 { + grid-column-start: 3; + } + + .cu-lg-col-start-4 { + grid-column-start: 4; + } + + .cu-lg-col-start-5 { + grid-column-start: 5; + } + + .cu-lg-col-start-6 { + grid-column-start: 6; + } + + .cu-lg-col-start-7 { + grid-column-start: 7; + } + + .cu-lg-col-start-8 { + grid-column-start: 8; + } + + .cu-lg-col-start-9 { + grid-column-start: 9; + } + + .cu-lg-col-start-auto { + grid-column-start: auto; + } + + .cu-lg-flex { + display: flex; + } + + .cu-lg-flex-col { + flex-direction: column; + } + + .cu-lg-flex-nowrap { + flex-wrap: nowrap; + } + + .cu-lg-flex-row { + flex-direction: row; + } + + .cu-lg-flex-wrap { + flex-wrap: wrap; + } + + .cu-lg-flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .cu-lg-gap-2xl { + gap: var(--canon-spacing-2xl); + } + + .cu-lg-gap-lg { + gap: var(--canon-spacing-lg); + } + + .cu-lg-gap-md { + gap: var(--canon-spacing-md); + } + + .cu-lg-gap-none { + gap: 0; + } + + .cu-lg-gap-sm { + gap: var(--canon-spacing-sm); + } + + .cu-lg-gap-xl { + gap: var(--canon-spacing-xl); + } + + .cu-lg-gap-xs { + gap: var(--canon-spacing-xs); + } + + .cu-lg-grid { + display: grid; + } + + .cu-lg-grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + + .cu-lg-grid-cols-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + + .cu-lg-hidden { + display: none; + } + + .cu-lg-inline { + display: inline; + } + + .cu-lg-inline-block { + display: inline-block; + } + + .cu-lg-items-center { + align-items: center; + } + + .cu-lg-items-end { + align-items: flex-end; + } + + .cu-lg-items-start { + align-items: flex-start; + } + + .cu-lg-items-stretch { + align-items: stretch; + } + + .cu-lg-justify-around { + justify-content: space-around; + } + + .cu-lg-justify-between { + justify-content: space-between; + } + + .cu-lg-justify-center { + justify-content: center; + } + + .cu-lg-justify-end { + justify-content: flex-end; + } + + .cu-lg-justify-start { + justify-content: flex-start; + } + + .cu-lg-justify-stretch { + justify-content: stretch; + } + + .cu-lg-m-2xl { + margin: var(--canon-spacing-2xl); + } + + .cu-lg-m-2xs { + margin: var(--canon-spacing-2xs); + } + + .cu-lg-m-lg { + margin: var(--canon-spacing-lg); + } + + .cu-lg-m-md { + margin: var(--canon-spacing-md); + } + + .cu-lg-m-none { + margin: 0; + } + + .cu-lg-m-sm { + margin: var(--canon-spacing-sm); + } + + .cu-lg-m-xl { + margin: var(--canon-spacing-xl); + } + + .cu-lg-m-xs { + margin: var(--canon-spacing-xs); + } + + .cu-lg-mb-2xl { + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-lg-mb-2xs { + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-lg-mb-lg { + margin-bottom: var(--canon-spacing-lg); + } + + .cu-lg-mb-md { + margin-bottom: var(--canon-spacing-md); + } + + .cu-lg-mb-none { + margin-bottom: 0; + } + + .cu-lg-mb-sm { + margin-bottom: var(--canon-spacing-sm); + } + + .cu-lg-mb-xl { + margin-bottom: var(--canon-spacing-xl); + } + + .cu-lg-mb-xs { + margin-bottom: var(--canon-spacing-xs); + } + + .cu-lg-ml-2xl { + margin-left: var(--canon-spacing-2xl); + } + + .cu-lg-ml-2xs { + margin-left: var(--canon-spacing-2xs); + } + + .cu-lg-ml-lg { + margin-left: var(--canon-spacing-lg); + } + + .cu-lg-ml-md { + margin-left: var(--canon-spacing-md); + } + + .cu-lg-ml-none { + margin-left: 0; + } + + .cu-lg-ml-sm { + margin-left: var(--canon-spacing-sm); + } + + .cu-lg-ml-xl { + margin-left: var(--canon-spacing-xl); + } + + .cu-lg-ml-xs { + margin-left: var(--canon-spacing-xs); + } + + .cu-lg-mr-2xl { + margin-right: var(--canon-spacing-2xl); + } + + .cu-lg-mr-2xs { + margin-right: var(--canon-spacing-2xs); + } + + .cu-lg-mr-lg { + margin-right: var(--canon-spacing-lg); + } + + .cu-lg-mr-md { + margin-right: var(--canon-spacing-md); + } + + .cu-lg-mr-none { + margin-right: 0; + } + + .cu-lg-mr-sm { + margin-right: var(--canon-spacing-sm); + } + + .cu-lg-mr-xl { + margin-right: var(--canon-spacing-xl); + } + + .cu-lg-mr-xs { + margin-right: var(--canon-spacing-xs); + } + + .cu-lg-mt-2xl { + margin-top: var(--canon-spacing-2xl); + } + + .cu-lg-mt-2xs { + margin-top: var(--canon-spacing-2xs); + } + + .cu-lg-mt-lg { + margin-top: var(--canon-spacing-lg); + } + + .cu-lg-mt-md { + margin-top: var(--canon-spacing-md); + } + + .cu-lg-mt-none { + margin-top: 0; + } + + .cu-lg-mt-sm { + margin-top: var(--canon-spacing-sm); + } + + .cu-lg-mt-xl { + margin-top: var(--canon-spacing-xl); + } + + .cu-lg-mt-xs { + margin-top: var(--canon-spacing-xs); + } + + .cu-lg-mx-2xl { + margin-left: var(--canon-spacing-2xl); + margin-right: var(--canon-spacing-2xl); + } + + .cu-lg-mx-2xs { + margin-left: var(--canon-spacing-2xs); + margin-right: var(--canon-spacing-2xs); + } + + .cu-lg-mx-lg { + margin-left: var(--canon-spacing-lg); + margin-right: var(--canon-spacing-lg); + } + + .cu-lg-mx-md { + margin-left: var(--canon-spacing-md); + margin-right: var(--canon-spacing-md); + } + + .cu-lg-mx-none { + margin-left: 0; + margin-right: 0; + } + + .cu-lg-mx-sm { + margin-left: var(--canon-spacing-sm); + margin-right: var(--canon-spacing-sm); + } + + .cu-lg-mx-xl { + margin-left: var(--canon-spacing-xl); + margin-right: var(--canon-spacing-xl); + } + + .cu-lg-mx-xs { + margin-left: var(--canon-spacing-xs); + margin-right: var(--canon-spacing-xs); + } + + .cu-lg-my-2xl { + margin-top: var(--canon-spacing-2xl); + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-lg-my-2xs { + margin-top: var(--canon-spacing-2xs); + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-lg-my-lg { + margin-top: var(--canon-spacing-lg); + margin-bottom: var(--canon-spacing-lg); + } + + .cu-lg-my-md { + margin-top: var(--canon-spacing-md); + margin-bottom: var(--canon-spacing-md); + } + + .cu-lg-my-none { + margin-top: 0; + margin-bottom: 0; + } + + .cu-lg-my-sm { + margin-top: var(--canon-spacing-sm); + margin-bottom: var(--canon-spacing-sm); + } + + .cu-lg-my-xl { + margin-top: var(--canon-spacing-xl); + margin-bottom: var(--canon-spacing-xl); + } + + .cu-lg-my-xs { + margin-top: var(--canon-spacing-xs); + margin-bottom: var(--canon-spacing-xs); + } + + .cu-lg-p-2xl { + padding: var(--canon-spacing-2xl); + } + + .cu-lg-p-2xs { + padding: var(--canon-spacing-2xs); + } + + .cu-lg-p-lg { + padding: var(--canon-spacing-lg); + } + + .cu-lg-p-md { + padding: var(--canon-spacing-md); + } + + .cu-lg-p-none { + padding: 0; + } + + .cu-lg-p-sm { + padding: var(--canon-spacing-sm); + } + + .cu-lg-p-xl { + padding: var(--canon-spacing-xl); + } + + .cu-lg-p-xs { + padding: var(--canon-spacing-xs); + } + + .cu-lg-pb-2xl { + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-lg-pb-2xs { + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-lg-pb-lg { + padding-bottom: var(--canon-spacing-lg); + } + + .cu-lg-pb-md { + padding-bottom: var(--canon-spacing-md); + } + + .cu-lg-pb-none { + padding-bottom: 0; + } + + .cu-lg-pb-sm { + padding-bottom: var(--canon-spacing-sm); + } + + .cu-lg-pb-xl { + padding-bottom: var(--canon-spacing-xl); + } + + .cu-lg-pb-xs { + padding-bottom: var(--canon-spacing-xs); + } + + .cu-lg-pl-2xl { + padding-left: var(--canon-spacing-2xl); + } + + .cu-lg-pl-2xs { + padding-left: var(--canon-spacing-2xs); + } + + .cu-lg-pl-lg { + padding-left: var(--canon-spacing-lg); + } + + .cu-lg-pl-md { + padding-left: var(--canon-spacing-md); + } + + .cu-lg-pl-none { + padding-left: 0; + } + + .cu-lg-pl-sm { + padding-left: var(--canon-spacing-sm); + } + + .cu-lg-pl-xl { + padding-left: var(--canon-spacing-xl); + } + + .cu-lg-pl-xs { + padding-left: var(--canon-spacing-xs); + } + + .cu-lg-pr-2xl { + padding-right: var(--canon-spacing-2xl); + } + + .cu-lg-pr-2xs { + padding-right: var(--canon-spacing-2xs); + } + + .cu-lg-pr-lg { + padding-right: var(--canon-spacing-lg); + } + + .cu-lg-pr-md { + padding-right: var(--canon-spacing-md); + } + + .cu-lg-pr-none { + padding-right: 0; + } + + .cu-lg-pr-sm { + padding-right: var(--canon-spacing-sm); + } + + .cu-lg-pr-xl { + padding-right: var(--canon-spacing-xl); + } + + .cu-lg-pr-xs { + padding-right: var(--canon-spacing-xs); + } + + .cu-lg-pt-2xl { + padding-top: var(--canon-spacing-2xl); + } + + .cu-lg-pt-2xs { + padding-top: var(--canon-spacing-2xs); + } + + .cu-lg-pt-lg { + padding-top: var(--canon-spacing-lg); + } + + .cu-lg-pt-md { + padding-top: var(--canon-spacing-md); + } + + .cu-lg-pt-none { + padding-top: 0; + } + + .cu-lg-pt-sm { + padding-top: var(--canon-spacing-sm); + } + + .cu-lg-pt-xl { + padding-top: var(--canon-spacing-xl); + } + + .cu-lg-pt-xs { + padding-top: var(--canon-spacing-xs); + } + + .cu-lg-px-2xl { + padding-left: var(--canon-spacing-2xl); + padding-right: var(--canon-spacing-2xl); + } + + .cu-lg-px-2xs { + padding-left: var(--canon-spacing-2xs); + padding-right: var(--canon-spacing-2xs); + } + + .cu-lg-px-lg { + padding-left: var(--canon-spacing-lg); + padding-right: var(--canon-spacing-lg); + } + + .cu-lg-px-md { + padding-left: var(--canon-spacing-md); + padding-right: var(--canon-spacing-md); + } + + .cu-lg-px-none { + padding-left: 0; + padding-right: 0; + } + + .cu-lg-px-sm { + padding-left: var(--canon-spacing-sm); + padding-right: var(--canon-spacing-sm); + } + + .cu-lg-px-xl { + padding-left: var(--canon-spacing-xl); + padding-right: var(--canon-spacing-xl); + } + + .cu-lg-px-xs { + padding-left: var(--canon-spacing-xs); + padding-right: var(--canon-spacing-xs); + } + + .cu-lg-py-2xl { + padding-top: var(--canon-spacing-2xl); + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-lg-py-2xs { + padding-top: var(--canon-spacing-2xs); + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-lg-py-lg { + padding-top: var(--canon-spacing-lg); + padding-bottom: var(--canon-spacing-lg); + } + + .cu-lg-py-md { + padding-top: var(--canon-spacing-md); + padding-bottom: var(--canon-spacing-md); + } + + .cu-lg-py-none { + padding-top: 0; + padding-bottom: 0; + } + + .cu-lg-py-sm { + padding-top: var(--canon-spacing-sm); + padding-bottom: var(--canon-spacing-sm); + } + + .cu-lg-py-xl { + padding-top: var(--canon-spacing-xl); + padding-bottom: var(--canon-spacing-xl); + } + + .cu-lg-py-xs { + padding-top: var(--canon-spacing-xs); + padding-bottom: var(--canon-spacing-xs); + } + + .cu-lg-rounded-2xl { + border-radius: var(--canon-border-radius-2xl); + } + + .cu-lg-rounded-2xs { + border-radius: var(--canon-border-radius-2xs); + } + + .cu-lg-rounded-lg { + border-radius: var(--canon-border-radius-lg); + } + + .cu-lg-rounded-md { + border-radius: var(--canon-border-radius-md); + } + + .cu-lg-rounded-none { + border-radius: 0; + } + + .cu-lg-rounded-sm { + border-radius: var(--canon-border-radius-sm); + } + + .cu-lg-rounded-xl { + border-radius: var(--canon-border-radius-xl); + } + + .cu-lg-rounded-xs { + border-radius: var(--canon-border-radius-xs); + } + + .cu-lg-row-span-1 { + grid-row: span 1 / span 1; + } + + .cu-lg-row-span-10 { + grid-row: span 10 / span 10; + } + + .cu-lg-row-span-11 { + grid-row: span 11 / span 11; + } + + .cu-lg-row-span-12 { + grid-row: span 12 / span 12; + } + + .cu-lg-row-span-2 { + grid-row: span 2 / span 2; + } + + .cu-lg-row-span-3 { + grid-row: span 3 / span 3; + } + + .cu-lg-row-span-4 { + grid-row: span 4 / span 4; + } + + .cu-lg-row-span-5 { + grid-row: span 5 / span 5; + } + + .cu-lg-row-span-6 { + grid-row: span 6 / span 6; + } + + .cu-lg-row-span-7 { + grid-row: span 7 / span 7; + } + + .cu-lg-row-span-8 { + grid-row: span 8 / span 8; + } + + .cu-lg-row-span-9 { + grid-row: span 9 / span 9; + } + + .cu-lg-row-span-auto { + grid-row: span auto / span auto; + } + + .cu-lg-wrap-reverse { + flex-wrap: wrap-reverse; + } + } + + @media (width >= 1280px) { + .cu-xl-block { + display: block; + } + + .cu-xl-border-base { + border-color: var(--canon-border-base); + border-style: solid; + border-width: 1px; + } + + .cu-xl-border-error { + border-color: var(--canon-border-error); + border-style: solid; + border-width: 1px; + } + + .cu-xl-border-none { + border-width: 0; + border-color: #0000; + } + + .cu-xl-border-selected { + border-color: var(--canon-border-selected); + border-style: solid; + border-width: 1px; + } + + .cu-xl-border-warning { + border-color: var(--canon-border-warning); + border-style: solid; + border-width: 1px; + } + + .cu-xl-col-end-1 { + grid-column-end: 1; + } + + .cu-xl-col-end-10 { + grid-column-end: 10; + } + + .cu-xl-col-end-11 { + grid-column-end: 11; + } + + .cu-xl-col-end-12 { + grid-column-end: 12; + } + + .cu-xl-col-end-13 { + grid-column-end: 13; + } + + .cu-xl-col-end-2 { + grid-column-end: 2; + } + + .cu-xl-col-end-3 { + grid-column-end: 3; + } + + .cu-xl-col-end-4 { + grid-column-end: 4; + } + + .cu-xl-col-end-5 { + grid-column-end: 5; + } + + .cu-xl-col-end-6 { + grid-column-end: 6; + } + + .cu-xl-col-end-7 { + grid-column-end: 7; + } + + .cu-xl-col-end-8 { + grid-column-end: 8; + } + + .cu-xl-col-end-9 { + grid-column-end: 9; + } + + .cu-xl-col-end-auto { + grid-column-end: auto; + } + + .cu-xl-col-span-1 { + grid-column: span 1 / span 1; + } + + .cu-xl-col-span-10 { + grid-column: span 10 / span 10; + } + + .cu-xl-col-span-11 { + grid-column: span 11 / span 11; + } + + .cu-xl-col-span-12 { + grid-column: span 12 / span 12; + } + + .cu-xl-col-span-2 { + grid-column: span 2 / span 2; + } + + .cu-xl-col-span-3 { + grid-column: span 3 / span 3; + } + + .cu-xl-col-span-4 { + grid-column: span 4 / span 4; + } + + .cu-xl-col-span-5 { + grid-column: span 5 / span 5; + } + + .cu-xl-col-span-6 { + grid-column: span 6 / span 6; + } + + .cu-xl-col-span-7 { + grid-column: span 7 / span 7; + } + + .cu-xl-col-span-8 { + grid-column: span 8 / span 8; + } + + .cu-xl-col-span-9 { + grid-column: span 9 / span 9; + } + + .cu-xl-col-span-auto { + grid-column: span auto / span auto; + } + + .cu-xl-col-start-1 { + grid-column-start: 1; + } + + .cu-xl-col-start-10 { + grid-column-start: 10; + } + + .cu-xl-col-start-11 { + grid-column-start: 11; + } + + .cu-xl-col-start-12 { + grid-column-start: 12; + } + + .cu-xl-col-start-13 { + grid-column-start: 13; + } + + .cu-xl-col-start-2 { + grid-column-start: 2; + } + + .cu-xl-col-start-3 { + grid-column-start: 3; + } + + .cu-xl-col-start-4 { + grid-column-start: 4; + } + + .cu-xl-col-start-5 { + grid-column-start: 5; + } + + .cu-xl-col-start-6 { + grid-column-start: 6; + } + + .cu-xl-col-start-7 { + grid-column-start: 7; + } + + .cu-xl-col-start-8 { + grid-column-start: 8; + } + + .cu-xl-col-start-9 { + grid-column-start: 9; + } + + .cu-xl-col-start-auto { + grid-column-start: auto; + } + + .cu-xl-flex { + display: flex; + } + + .cu-xl-flex-col { + flex-direction: column; + } + + .cu-xl-flex-nowrap { + flex-wrap: nowrap; + } + + .cu-xl-flex-row { + flex-direction: row; + } + + .cu-xl-flex-wrap { + flex-wrap: wrap; + } + + .cu-xl-flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .cu-xl-gap-2xl { + gap: var(--canon-spacing-2xl); + } + + .cu-xl-gap-lg { + gap: var(--canon-spacing-lg); + } + + .cu-xl-gap-md { + gap: var(--canon-spacing-md); + } + + .cu-xl-gap-none { + gap: 0; + } + + .cu-xl-gap-sm { + gap: var(--canon-spacing-sm); + } + + .cu-xl-gap-xl { + gap: var(--canon-spacing-xl); + } + + .cu-xl-gap-xs { + gap: var(--canon-spacing-xs); + } + + .cu-xl-grid { + display: grid; + } + + .cu-xl-grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + + .cu-xl-grid-cols-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + + .cu-xl-hidden { + display: none; + } + + .cu-xl-inline { + display: inline; + } + + .cu-xl-inline-block { + display: inline-block; + } + + .cu-xl-items-center { + align-items: center; + } + + .cu-xl-items-end { + align-items: flex-end; + } + + .cu-xl-items-start { + align-items: flex-start; + } + + .cu-xl-items-stretch { + align-items: stretch; + } + + .cu-xl-justify-around { + justify-content: space-around; + } + + .cu-xl-justify-between { + justify-content: space-between; + } + + .cu-xl-justify-center { + justify-content: center; + } + + .cu-xl-justify-end { + justify-content: flex-end; + } + + .cu-xl-justify-start { + justify-content: flex-start; + } + + .cu-xl-justify-stretch { + justify-content: stretch; + } + + .cu-xl-m-2xl { + margin: var(--canon-spacing-2xl); + } + + .cu-xl-m-2xs { + margin: var(--canon-spacing-2xs); + } + + .cu-xl-m-lg { + margin: var(--canon-spacing-lg); + } + + .cu-xl-m-md { + margin: var(--canon-spacing-md); + } + + .cu-xl-m-none { + margin: 0; + } + + .cu-xl-m-sm { + margin: var(--canon-spacing-sm); + } + + .cu-xl-m-xl { + margin: var(--canon-spacing-xl); + } + + .cu-xl-m-xs { + margin: var(--canon-spacing-xs); + } + + .cu-xl-mb-2xl { + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-xl-mb-2xs { + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-xl-mb-lg { + margin-bottom: var(--canon-spacing-lg); + } + + .cu-xl-mb-md { + margin-bottom: var(--canon-spacing-md); + } + + .cu-xl-mb-none { + margin-bottom: 0; + } + + .cu-xl-mb-sm { + margin-bottom: var(--canon-spacing-sm); + } + + .cu-xl-mb-xl { + margin-bottom: var(--canon-spacing-xl); + } + + .cu-xl-mb-xs { + margin-bottom: var(--canon-spacing-xs); + } + + .cu-xl-ml-2xl { + margin-left: var(--canon-spacing-2xl); + } + + .cu-xl-ml-2xs { + margin-left: var(--canon-spacing-2xs); + } + + .cu-xl-ml-lg { + margin-left: var(--canon-spacing-lg); + } + + .cu-xl-ml-md { + margin-left: var(--canon-spacing-md); + } + + .cu-xl-ml-none { + margin-left: 0; + } + + .cu-xl-ml-sm { + margin-left: var(--canon-spacing-sm); + } + + .cu-xl-ml-xl { + margin-left: var(--canon-spacing-xl); + } + + .cu-xl-ml-xs { + margin-left: var(--canon-spacing-xs); + } + + .cu-xl-mr-2xl { + margin-right: var(--canon-spacing-2xl); + } + + .cu-xl-mr-2xs { + margin-right: var(--canon-spacing-2xs); + } + + .cu-xl-mr-lg { + margin-right: var(--canon-spacing-lg); + } + + .cu-xl-mr-md { + margin-right: var(--canon-spacing-md); + } + + .cu-xl-mr-none { + margin-right: 0; + } + + .cu-xl-mr-sm { + margin-right: var(--canon-spacing-sm); + } + + .cu-xl-mr-xl { + margin-right: var(--canon-spacing-xl); + } + + .cu-xl-mr-xs { + margin-right: var(--canon-spacing-xs); + } + + .cu-xl-mt-2xl { + margin-top: var(--canon-spacing-2xl); + } + + .cu-xl-mt-2xs { + margin-top: var(--canon-spacing-2xs); + } + + .cu-xl-mt-lg { + margin-top: var(--canon-spacing-lg); + } + + .cu-xl-mt-md { + margin-top: var(--canon-spacing-md); + } + + .cu-xl-mt-none { + margin-top: 0; + } + + .cu-xl-mt-sm { + margin-top: var(--canon-spacing-sm); + } + + .cu-xl-mt-xl { + margin-top: var(--canon-spacing-xl); + } + + .cu-xl-mt-xs { + margin-top: var(--canon-spacing-xs); + } + + .cu-xl-mx-2xl { + margin-left: var(--canon-spacing-2xl); + margin-right: var(--canon-spacing-2xl); + } + + .cu-xl-mx-2xs { + margin-left: var(--canon-spacing-2xs); + margin-right: var(--canon-spacing-2xs); + } + + .cu-xl-mx-lg { + margin-left: var(--canon-spacing-lg); + margin-right: var(--canon-spacing-lg); + } + + .cu-xl-mx-md { + margin-left: var(--canon-spacing-md); + margin-right: var(--canon-spacing-md); + } + + .cu-xl-mx-none { + margin-left: 0; + margin-right: 0; + } + + .cu-xl-mx-sm { + margin-left: var(--canon-spacing-sm); + margin-right: var(--canon-spacing-sm); + } + + .cu-xl-mx-xl { + margin-left: var(--canon-spacing-xl); + margin-right: var(--canon-spacing-xl); + } + + .cu-xl-mx-xs { + margin-left: var(--canon-spacing-xs); + margin-right: var(--canon-spacing-xs); + } + + .cu-xl-my-2xl { + margin-top: var(--canon-spacing-2xl); + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-xl-my-2xs { + margin-top: var(--canon-spacing-2xs); + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-xl-my-lg { + margin-top: var(--canon-spacing-lg); + margin-bottom: var(--canon-spacing-lg); + } + + .cu-xl-my-md { + margin-top: var(--canon-spacing-md); + margin-bottom: var(--canon-spacing-md); + } + + .cu-xl-my-none { + margin-top: 0; + margin-bottom: 0; + } + + .cu-xl-my-sm { + margin-top: var(--canon-spacing-sm); + margin-bottom: var(--canon-spacing-sm); + } + + .cu-xl-my-xl { + margin-top: var(--canon-spacing-xl); + margin-bottom: var(--canon-spacing-xl); + } + + .cu-xl-my-xs { + margin-top: var(--canon-spacing-xs); + margin-bottom: var(--canon-spacing-xs); + } + + .cu-xl-p-2xl { + padding: var(--canon-spacing-2xl); + } + + .cu-xl-p-2xs { + padding: var(--canon-spacing-2xs); + } + + .cu-xl-p-lg { + padding: var(--canon-spacing-lg); + } + + .cu-xl-p-md { + padding: var(--canon-spacing-md); + } + + .cu-xl-p-none { + padding: 0; + } + + .cu-xl-p-sm { + padding: var(--canon-spacing-sm); + } + + .cu-xl-p-xl { + padding: var(--canon-spacing-xl); + } + + .cu-xl-p-xs { + padding: var(--canon-spacing-xs); + } + + .cu-xl-pb-2xl { + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-xl-pb-2xs { + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-xl-pb-lg { + padding-bottom: var(--canon-spacing-lg); + } + + .cu-xl-pb-md { + padding-bottom: var(--canon-spacing-md); + } + + .cu-xl-pb-none { + padding-bottom: 0; + } + + .cu-xl-pb-sm { + padding-bottom: var(--canon-spacing-sm); + } + + .cu-xl-pb-xl { + padding-bottom: var(--canon-spacing-xl); + } + + .cu-xl-pb-xs { + padding-bottom: var(--canon-spacing-xs); + } + + .cu-xl-pl-2xl { + padding-left: var(--canon-spacing-2xl); + } + + .cu-xl-pl-2xs { + padding-left: var(--canon-spacing-2xs); + } + + .cu-xl-pl-lg { + padding-left: var(--canon-spacing-lg); + } + + .cu-xl-pl-md { + padding-left: var(--canon-spacing-md); + } + + .cu-xl-pl-none { + padding-left: 0; + } + + .cu-xl-pl-sm { + padding-left: var(--canon-spacing-sm); + } + + .cu-xl-pl-xl { + padding-left: var(--canon-spacing-xl); + } + + .cu-xl-pl-xs { + padding-left: var(--canon-spacing-xs); + } + + .cu-xl-pr-2xl { + padding-right: var(--canon-spacing-2xl); + } + + .cu-xl-pr-2xs { + padding-right: var(--canon-spacing-2xs); + } + + .cu-xl-pr-lg { + padding-right: var(--canon-spacing-lg); + } + + .cu-xl-pr-md { + padding-right: var(--canon-spacing-md); + } + + .cu-xl-pr-none { + padding-right: 0; + } + + .cu-xl-pr-sm { + padding-right: var(--canon-spacing-sm); + } + + .cu-xl-pr-xl { + padding-right: var(--canon-spacing-xl); + } + + .cu-xl-pr-xs { + padding-right: var(--canon-spacing-xs); + } + + .cu-xl-pt-2xl { + padding-top: var(--canon-spacing-2xl); + } + + .cu-xl-pt-2xs { + padding-top: var(--canon-spacing-2xs); + } + + .cu-xl-pt-lg { + padding-top: var(--canon-spacing-lg); + } + + .cu-xl-pt-md { + padding-top: var(--canon-spacing-md); + } + + .cu-xl-pt-none { + padding-top: 0; + } + + .cu-xl-pt-sm { + padding-top: var(--canon-spacing-sm); + } + + .cu-xl-pt-xl { + padding-top: var(--canon-spacing-xl); + } + + .cu-xl-pt-xs { + padding-top: var(--canon-spacing-xs); + } + + .cu-xl-px-2xl { + padding-left: var(--canon-spacing-2xl); + padding-right: var(--canon-spacing-2xl); + } + + .cu-xl-px-2xs { + padding-left: var(--canon-spacing-2xs); + padding-right: var(--canon-spacing-2xs); + } + + .cu-xl-px-lg { + padding-left: var(--canon-spacing-lg); + padding-right: var(--canon-spacing-lg); + } + + .cu-xl-px-md { + padding-left: var(--canon-spacing-md); + padding-right: var(--canon-spacing-md); + } + + .cu-xl-px-none { + padding-left: 0; + padding-right: 0; + } + + .cu-xl-px-sm { + padding-left: var(--canon-spacing-sm); + padding-right: var(--canon-spacing-sm); + } + + .cu-xl-px-xl { + padding-left: var(--canon-spacing-xl); + padding-right: var(--canon-spacing-xl); + } + + .cu-xl-px-xs { + padding-left: var(--canon-spacing-xs); + padding-right: var(--canon-spacing-xs); + } + + .cu-xl-py-2xl { + padding-top: var(--canon-spacing-2xl); + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-xl-py-2xs { + padding-top: var(--canon-spacing-2xs); + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-xl-py-lg { + padding-top: var(--canon-spacing-lg); + padding-bottom: var(--canon-spacing-lg); + } + + .cu-xl-py-md { + padding-top: var(--canon-spacing-md); + padding-bottom: var(--canon-spacing-md); + } + + .cu-xl-py-none { + padding-top: 0; + padding-bottom: 0; + } + + .cu-xl-py-sm { + padding-top: var(--canon-spacing-sm); + padding-bottom: var(--canon-spacing-sm); + } + + .cu-xl-py-xl { + padding-top: var(--canon-spacing-xl); + padding-bottom: var(--canon-spacing-xl); + } + + .cu-xl-py-xs { + padding-top: var(--canon-spacing-xs); + padding-bottom: var(--canon-spacing-xs); + } + + .cu-xl-rounded-2xl { + border-radius: var(--canon-border-radius-2xl); + } + + .cu-xl-rounded-2xs { + border-radius: var(--canon-border-radius-2xs); + } + + .cu-xl-rounded-lg { + border-radius: var(--canon-border-radius-lg); + } + + .cu-xl-rounded-md { + border-radius: var(--canon-border-radius-md); + } + + .cu-xl-rounded-none { + border-radius: 0; + } + + .cu-xl-rounded-sm { + border-radius: var(--canon-border-radius-sm); + } + + .cu-xl-rounded-xl { + border-radius: var(--canon-border-radius-xl); + } + + .cu-xl-rounded-xs { + border-radius: var(--canon-border-radius-xs); + } + + .cu-xl-row-span-1 { + grid-row: span 1 / span 1; + } + + .cu-xl-row-span-10 { + grid-row: span 10 / span 10; + } + + .cu-xl-row-span-11 { + grid-row: span 11 / span 11; + } + + .cu-xl-row-span-12 { + grid-row: span 12 / span 12; + } + + .cu-xl-row-span-2 { + grid-row: span 2 / span 2; + } + + .cu-xl-row-span-3 { + grid-row: span 3 / span 3; + } + + .cu-xl-row-span-4 { + grid-row: span 4 / span 4; + } + + .cu-xl-row-span-5 { + grid-row: span 5 / span 5; + } + + .cu-xl-row-span-6 { + grid-row: span 6 / span 6; + } + + .cu-xl-row-span-7 { + grid-row: span 7 / span 7; + } + + .cu-xl-row-span-8 { + grid-row: span 8 / span 8; + } + + .cu-xl-row-span-9 { + grid-row: span 9 / span 9; + } + + .cu-xl-row-span-auto { + grid-row: span auto / span auto; + } + + .cu-xl-wrap-reverse { + flex-wrap: wrap-reverse; + } + } + + @media (width >= 1536px) { + .cu-2xl-block { + display: block; + } + + .cu-2xl-border-base { + border-color: var(--canon-border-base); + border-style: solid; + border-width: 1px; + } + + .cu-2xl-border-error { + border-color: var(--canon-border-error); + border-style: solid; + border-width: 1px; + } + + .cu-2xl-border-none { + border-width: 0; + border-color: #0000; + } + + .cu-2xl-border-selected { + border-color: var(--canon-border-selected); + border-style: solid; + border-width: 1px; + } + + .cu-2xl-border-warning { + border-color: var(--canon-border-warning); + border-style: solid; + border-width: 1px; + } + + .cu-2xl-col-end-1 { + grid-column-end: 1; + } + + .cu-2xl-col-end-10 { + grid-column-end: 10; + } + + .cu-2xl-col-end-11 { + grid-column-end: 11; + } + + .cu-2xl-col-end-12 { + grid-column-end: 12; + } + + .cu-2xl-col-end-13 { + grid-column-end: 13; + } + + .cu-2xl-col-end-2 { + grid-column-end: 2; + } + + .cu-2xl-col-end-3 { + grid-column-end: 3; + } + + .cu-2xl-col-end-4 { + grid-column-end: 4; + } + + .cu-2xl-col-end-5 { + grid-column-end: 5; + } + + .cu-2xl-col-end-6 { + grid-column-end: 6; + } + + .cu-2xl-col-end-7 { + grid-column-end: 7; + } + + .cu-2xl-col-end-8 { + grid-column-end: 8; + } + + .cu-2xl-col-end-9 { + grid-column-end: 9; + } + + .cu-2xl-col-end-auto { + grid-column-end: auto; + } + + .cu-2xl-col-span-1 { + grid-column: span 1 / span 1; + } + + .cu-2xl-col-span-10 { + grid-column: span 10 / span 10; + } + + .cu-2xl-col-span-11 { + grid-column: span 11 / span 11; + } + + .cu-2xl-col-span-12 { + grid-column: span 12 / span 12; + } + + .cu-2xl-col-span-2 { + grid-column: span 2 / span 2; + } + + .cu-2xl-col-span-3 { + grid-column: span 3 / span 3; + } + + .cu-2xl-col-span-4 { + grid-column: span 4 / span 4; + } + + .cu-2xl-col-span-5 { + grid-column: span 5 / span 5; + } + + .cu-2xl-col-span-6 { + grid-column: span 6 / span 6; + } + + .cu-2xl-col-span-7 { + grid-column: span 7 / span 7; + } + + .cu-2xl-col-span-8 { + grid-column: span 8 / span 8; + } + + .cu-2xl-col-span-9 { + grid-column: span 9 / span 9; + } + + .cu-2xl-col-span-auto { + grid-column: span auto / span auto; + } + + .cu-2xl-col-start-1 { + grid-column-start: 1; + } + + .cu-2xl-col-start-10 { + grid-column-start: 10; + } + + .cu-2xl-col-start-11 { + grid-column-start: 11; + } + + .cu-2xl-col-start-12 { + grid-column-start: 12; + } + + .cu-2xl-col-start-13 { + grid-column-start: 13; + } + + .cu-2xl-col-start-2 { + grid-column-start: 2; + } + + .cu-2xl-col-start-3 { + grid-column-start: 3; + } + + .cu-2xl-col-start-4 { + grid-column-start: 4; + } + + .cu-2xl-col-start-5 { + grid-column-start: 5; + } + + .cu-2xl-col-start-6 { + grid-column-start: 6; + } + + .cu-2xl-col-start-7 { + grid-column-start: 7; + } + + .cu-2xl-col-start-8 { + grid-column-start: 8; + } + + .cu-2xl-col-start-9 { + grid-column-start: 9; + } + + .cu-2xl-col-start-auto { + grid-column-start: auto; + } + + .cu-2xl-flex { + display: flex; + } + + .cu-2xl-flex-col { + flex-direction: column; + } + + .cu-2xl-flex-nowrap { + flex-wrap: nowrap; + } + + .cu-2xl-flex-row { + flex-direction: row; + } + + .cu-2xl-flex-wrap { + flex-wrap: wrap; + } + + .cu-2xl-flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .cu-2xl-gap-2xl { + gap: var(--canon-spacing-2xl); + } + + .cu-2xl-gap-lg { + gap: var(--canon-spacing-lg); + } + + .cu-2xl-gap-md { + gap: var(--canon-spacing-md); + } + + .cu-2xl-gap-none { + gap: 0; + } + + .cu-2xl-gap-sm { + gap: var(--canon-spacing-sm); + } + + .cu-2xl-gap-xl { + gap: var(--canon-spacing-xl); + } + + .cu-2xl-gap-xs { + gap: var(--canon-spacing-xs); + } + + .cu-2xl-grid { + display: grid; + } + + .cu-2xl-grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-10 { + grid-template-columns: repeat(10, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-11 { + grid-template-columns: repeat(11, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-12 { + grid-template-columns: repeat(12, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-5 { + grid-template-columns: repeat(5, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-7 { + grid-template-columns: repeat(7, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-8 { + grid-template-columns: repeat(8, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-9 { + grid-template-columns: repeat(9, minmax(0, 1fr)); + } + + .cu-2xl-grid-cols-auto { + grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); + } + + .cu-2xl-hidden { + display: none; + } + + .cu-2xl-inline { + display: inline; + } + + .cu-2xl-inline-block { + display: inline-block; + } + + .cu-2xl-items-center { + align-items: center; + } + + .cu-2xl-items-end { + align-items: flex-end; + } + + .cu-2xl-items-start { + align-items: flex-start; + } + + .cu-2xl-items-stretch { + align-items: stretch; + } + + .cu-2xl-justify-around { + justify-content: space-around; + } + + .cu-2xl-justify-between { + justify-content: space-between; + } + + .cu-2xl-justify-center { + justify-content: center; + } + + .cu-2xl-justify-end { + justify-content: flex-end; + } + + .cu-2xl-justify-start { + justify-content: flex-start; + } + + .cu-2xl-justify-stretch { + justify-content: stretch; + } + + .cu-2xl-m-2xl { + margin: var(--canon-spacing-2xl); + } + + .cu-2xl-m-2xs { + margin: var(--canon-spacing-2xs); + } + + .cu-2xl-m-lg { + margin: var(--canon-spacing-lg); + } + + .cu-2xl-m-md { + margin: var(--canon-spacing-md); + } + + .cu-2xl-m-none { + margin: 0; + } + + .cu-2xl-m-sm { + margin: var(--canon-spacing-sm); + } + + .cu-2xl-m-xl { + margin: var(--canon-spacing-xl); + } + + .cu-2xl-m-xs { + margin: var(--canon-spacing-xs); + } + + .cu-2xl-mb-2xl { + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-2xl-mb-2xs { + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-2xl-mb-lg { + margin-bottom: var(--canon-spacing-lg); + } + + .cu-2xl-mb-md { + margin-bottom: var(--canon-spacing-md); + } + + .cu-2xl-mb-none { + margin-bottom: 0; + } + + .cu-2xl-mb-sm { + margin-bottom: var(--canon-spacing-sm); + } + + .cu-2xl-mb-xl { + margin-bottom: var(--canon-spacing-xl); + } + + .cu-2xl-mb-xs { + margin-bottom: var(--canon-spacing-xs); + } + + .cu-2xl-ml-2xl { + margin-left: var(--canon-spacing-2xl); + } + + .cu-2xl-ml-2xs { + margin-left: var(--canon-spacing-2xs); + } + + .cu-2xl-ml-lg { + margin-left: var(--canon-spacing-lg); + } + + .cu-2xl-ml-md { + margin-left: var(--canon-spacing-md); + } + + .cu-2xl-ml-none { + margin-left: 0; + } + + .cu-2xl-ml-sm { + margin-left: var(--canon-spacing-sm); + } + + .cu-2xl-ml-xl { + margin-left: var(--canon-spacing-xl); + } + + .cu-2xl-ml-xs { + margin-left: var(--canon-spacing-xs); + } + + .cu-2xl-mr-2xl { + margin-right: var(--canon-spacing-2xl); + } + + .cu-2xl-mr-2xs { + margin-right: var(--canon-spacing-2xs); + } + + .cu-2xl-mr-lg { + margin-right: var(--canon-spacing-lg); + } + + .cu-2xl-mr-md { + margin-right: var(--canon-spacing-md); + } + + .cu-2xl-mr-none { + margin-right: 0; + } + + .cu-2xl-mr-sm { + margin-right: var(--canon-spacing-sm); + } + + .cu-2xl-mr-xl { + margin-right: var(--canon-spacing-xl); + } + + .cu-2xl-mr-xs { + margin-right: var(--canon-spacing-xs); + } + + .cu-2xl-mt-2xl { + margin-top: var(--canon-spacing-2xl); + } + + .cu-2xl-mt-2xs { + margin-top: var(--canon-spacing-2xs); + } + + .cu-2xl-mt-lg { + margin-top: var(--canon-spacing-lg); + } + + .cu-2xl-mt-md { + margin-top: var(--canon-spacing-md); + } + + .cu-2xl-mt-none { + margin-top: 0; + } + + .cu-2xl-mt-sm { + margin-top: var(--canon-spacing-sm); + } + + .cu-2xl-mt-xl { + margin-top: var(--canon-spacing-xl); + } + + .cu-2xl-mt-xs { + margin-top: var(--canon-spacing-xs); + } + + .cu-2xl-mx-2xl { + margin-left: var(--canon-spacing-2xl); + margin-right: var(--canon-spacing-2xl); + } + + .cu-2xl-mx-2xs { + margin-left: var(--canon-spacing-2xs); + margin-right: var(--canon-spacing-2xs); + } + + .cu-2xl-mx-lg { + margin-left: var(--canon-spacing-lg); + margin-right: var(--canon-spacing-lg); + } + + .cu-2xl-mx-md { + margin-left: var(--canon-spacing-md); + margin-right: var(--canon-spacing-md); + } + + .cu-2xl-mx-none { + margin-left: 0; + margin-right: 0; + } + + .cu-2xl-mx-sm { + margin-left: var(--canon-spacing-sm); + margin-right: var(--canon-spacing-sm); + } + + .cu-2xl-mx-xl { + margin-left: var(--canon-spacing-xl); + margin-right: var(--canon-spacing-xl); + } + + .cu-2xl-mx-xs { + margin-left: var(--canon-spacing-xs); + margin-right: var(--canon-spacing-xs); + } + + .cu-2xl-my-2xl { + margin-top: var(--canon-spacing-2xl); + margin-bottom: var(--canon-spacing-2xl); + } + + .cu-2xl-my-2xs { + margin-top: var(--canon-spacing-2xs); + margin-bottom: var(--canon-spacing-2xs); + } + + .cu-2xl-my-lg { + margin-top: var(--canon-spacing-lg); + margin-bottom: var(--canon-spacing-lg); + } + + .cu-2xl-my-md { + margin-top: var(--canon-spacing-md); + margin-bottom: var(--canon-spacing-md); + } + + .cu-2xl-my-none { + margin-top: 0; + margin-bottom: 0; + } + + .cu-2xl-my-sm { + margin-top: var(--canon-spacing-sm); + margin-bottom: var(--canon-spacing-sm); + } + + .cu-2xl-my-xl { + margin-top: var(--canon-spacing-xl); + margin-bottom: var(--canon-spacing-xl); + } + + .cu-2xl-my-xs { + margin-top: var(--canon-spacing-xs); + margin-bottom: var(--canon-spacing-xs); + } + + .cu-2xl-p-2xl { + padding: var(--canon-spacing-2xl); + } + + .cu-2xl-p-2xs { + padding: var(--canon-spacing-2xs); + } + + .cu-2xl-p-lg { + padding: var(--canon-spacing-lg); + } + + .cu-2xl-p-md { + padding: var(--canon-spacing-md); + } + + .cu-2xl-p-none { + padding: 0; + } + + .cu-2xl-p-sm { + padding: var(--canon-spacing-sm); + } + + .cu-2xl-p-xl { + padding: var(--canon-spacing-xl); + } + + .cu-2xl-p-xs { + padding: var(--canon-spacing-xs); + } + + .cu-2xl-pb-2xl { + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-2xl-pb-2xs { + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-2xl-pb-lg { + padding-bottom: var(--canon-spacing-lg); + } + + .cu-2xl-pb-md { + padding-bottom: var(--canon-spacing-md); + } + + .cu-2xl-pb-none { + padding-bottom: 0; + } + + .cu-2xl-pb-sm { + padding-bottom: var(--canon-spacing-sm); + } + + .cu-2xl-pb-xl { + padding-bottom: var(--canon-spacing-xl); + } + + .cu-2xl-pb-xs { + padding-bottom: var(--canon-spacing-xs); + } + + .cu-2xl-pl-2xl { + padding-left: var(--canon-spacing-2xl); + } + + .cu-2xl-pl-2xs { + padding-left: var(--canon-spacing-2xs); + } + + .cu-2xl-pl-lg { + padding-left: var(--canon-spacing-lg); + } + + .cu-2xl-pl-md { + padding-left: var(--canon-spacing-md); + } + + .cu-2xl-pl-none { + padding-left: 0; + } + + .cu-2xl-pl-sm { + padding-left: var(--canon-spacing-sm); + } + + .cu-2xl-pl-xl { + padding-left: var(--canon-spacing-xl); + } + + .cu-2xl-pl-xs { + padding-left: var(--canon-spacing-xs); + } + + .cu-2xl-pr-2xl { + padding-right: var(--canon-spacing-2xl); + } + + .cu-2xl-pr-2xs { + padding-right: var(--canon-spacing-2xs); + } + + .cu-2xl-pr-lg { + padding-right: var(--canon-spacing-lg); + } + + .cu-2xl-pr-md { + padding-right: var(--canon-spacing-md); + } + + .cu-2xl-pr-none { + padding-right: 0; + } + + .cu-2xl-pr-sm { + padding-right: var(--canon-spacing-sm); + } + + .cu-2xl-pr-xl { + padding-right: var(--canon-spacing-xl); + } + + .cu-2xl-pr-xs { + padding-right: var(--canon-spacing-xs); + } + + .cu-2xl-pt-2xl { + padding-top: var(--canon-spacing-2xl); + } + + .cu-2xl-pt-2xs { + padding-top: var(--canon-spacing-2xs); + } + + .cu-2xl-pt-lg { + padding-top: var(--canon-spacing-lg); + } + + .cu-2xl-pt-md { + padding-top: var(--canon-spacing-md); + } + + .cu-2xl-pt-none { + padding-top: 0; + } + + .cu-2xl-pt-sm { + padding-top: var(--canon-spacing-sm); + } + + .cu-2xl-pt-xl { + padding-top: var(--canon-spacing-xl); + } + + .cu-2xl-pt-xs { + padding-top: var(--canon-spacing-xs); + } + + .cu-2xl-px-2xl { + padding-left: var(--canon-spacing-2xl); + padding-right: var(--canon-spacing-2xl); + } + + .cu-2xl-px-2xs { + padding-left: var(--canon-spacing-2xs); + padding-right: var(--canon-spacing-2xs); + } + + .cu-2xl-px-lg { + padding-left: var(--canon-spacing-lg); + padding-right: var(--canon-spacing-lg); + } + + .cu-2xl-px-md { + padding-left: var(--canon-spacing-md); + padding-right: var(--canon-spacing-md); + } + + .cu-2xl-px-none { + padding-left: 0; + padding-right: 0; + } + + .cu-2xl-px-sm { + padding-left: var(--canon-spacing-sm); + padding-right: var(--canon-spacing-sm); + } + + .cu-2xl-px-xl { + padding-left: var(--canon-spacing-xl); + padding-right: var(--canon-spacing-xl); + } + + .cu-2xl-px-xs { + padding-left: var(--canon-spacing-xs); + padding-right: var(--canon-spacing-xs); + } + + .cu-2xl-py-2xl { + padding-top: var(--canon-spacing-2xl); + padding-bottom: var(--canon-spacing-2xl); + } + + .cu-2xl-py-2xs { + padding-top: var(--canon-spacing-2xs); + padding-bottom: var(--canon-spacing-2xs); + } + + .cu-2xl-py-lg { + padding-top: var(--canon-spacing-lg); + padding-bottom: var(--canon-spacing-lg); + } + + .cu-2xl-py-md { + padding-top: var(--canon-spacing-md); + padding-bottom: var(--canon-spacing-md); + } + + .cu-2xl-py-none { + padding-top: 0; + padding-bottom: 0; + } + + .cu-2xl-py-sm { + padding-top: var(--canon-spacing-sm); + padding-bottom: var(--canon-spacing-sm); + } + + .cu-2xl-py-xl { + padding-top: var(--canon-spacing-xl); + padding-bottom: var(--canon-spacing-xl); + } + + .cu-2xl-py-xs { + padding-top: var(--canon-spacing-xs); + padding-bottom: var(--canon-spacing-xs); + } + + .cu-2xl-rounded-2xl { + border-radius: var(--canon-border-radius-2xl); + } + + .cu-2xl-rounded-2xs { + border-radius: var(--canon-border-radius-2xs); + } + + .cu-2xl-rounded-lg { + border-radius: var(--canon-border-radius-lg); + } + + .cu-2xl-rounded-md { + border-radius: var(--canon-border-radius-md); + } + + .cu-2xl-rounded-none { + border-radius: 0; + } + + .cu-2xl-rounded-sm { + border-radius: var(--canon-border-radius-sm); + } + + .cu-2xl-rounded-xl { + border-radius: var(--canon-border-radius-xl); + } + + .cu-2xl-rounded-xs { + border-radius: var(--canon-border-radius-xs); + } + + .cu-2xl-row-span-1 { + grid-row: span 1 / span 1; + } + + .cu-2xl-row-span-10 { + grid-row: span 10 / span 10; + } + + .cu-2xl-row-span-11 { + grid-row: span 11 / span 11; + } + + .cu-2xl-row-span-12 { + grid-row: span 12 / span 12; + } + + .cu-2xl-row-span-2 { + grid-row: span 2 / span 2; + } + + .cu-2xl-row-span-3 { + grid-row: span 3 / span 3; + } + + .cu-2xl-row-span-4 { + grid-row: span 4 / span 4; + } + + .cu-2xl-row-span-5 { + grid-row: span 5 / span 5; + } + + .cu-2xl-row-span-6 { + grid-row: span 6 / span 6; + } + + .cu-2xl-row-span-7 { + grid-row: span 7 / span 7; + } + + .cu-2xl-row-span-8 { + grid-row: span 8 / span 8; + } + + .cu-2xl-row-span-9 { + grid-row: span 9 / span 9; + } + + .cu-2xl-row-span-auto { + grid-row: span auto / span auto; + } + + .cu-2xl-wrap-reverse { + flex-wrap: wrap-reverse; + } + } +} + +[data-theme="light"] { + --canon-font-regular: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --canon-font-monospace: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace; + --canon-font-weight-regular: 400; + --canon-font-weight-bold: 600; + --canon-font-size-label: .625rem; + --canon-font-size-caption: .75rem; + --canon-font-size-body: .875rem; + --canon-font-size-subtitle: 1rem; + --canon-font-size-title5: 1.25rem; + --canon-font-size-title4: 1.5rem; + --canon-font-size-title3: 2rem; + --canon-font-size-title2: 3rem; + --canon-font-size-title1: 4rem; + --canon-font-size-display: 5.75rem; + --canon-spacing-5xs: .125rem; + --canon-spacing-4xs: .25rem; + --canon-spacing-3xs: .375rem; + --canon-spacing-2xs: .5rem; + --canon-spacing-xs: .75rem; + --canon-spacing-sm: 1rem; + --canon-spacing-md: 1.5rem; + --canon-spacing-lg: 2rem; + --canon-spacing-xl: 2.5rem; + --canon-spacing-2xl: 3rem; + --canon-spacing-3xl: 3.5rem; + --canon-border-radius-2xs: .125rem; + --canon-border-radius-xs: .25rem; + --canon-border-radius-sm: .5rem; + --canon-border-radius-md: .75rem; + --canon-border-radius-lg: 1rem; + --canon-border-radius-xl: 1.25rem; + --canon-border-radius-2xl: 1.5rem; + --canon-container-max-width: 1200px; + --canon-container-padding: 1rem; + --canon-accent: #000; + --canon-background: #f8f8f8; + --canon-surface-1: #fff; + --canon-surface-2: #f4f4f4; + --canon-surface-3: #f1f1f1; + --canon-border-base: #0000001a; + --canon-border-hover: #0003; + --canon-border-warning: #e36d05; + --canon-border-error: #e22b2b; + --canon-border-selected: #1db954; + --canon-error: #f50000; + --canon-text-primary: #000; + --canon-text-primary-on-accent: #fff; + --canon-text-secondary: #646464; +} + +[data-theme="dark"] { + --canon-font-regular: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --canon-font-monospace: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace; + --canon-font-weight-regular: 400; + --canon-font-weight-bold: 600; + --canon-font-size-label: .625rem; + --canon-font-size-caption: .75rem; + --canon-font-size-body: .875rem; + --canon-font-size-subtitle: 1rem; + --canon-font-size-title5: 1.25rem; + --canon-font-size-title4: 1.5rem; + --canon-font-size-title3: 2rem; + --canon-font-size-title2: 3rem; + --canon-font-size-title1: 4rem; + --canon-font-size-display: 5.75rem; + --canon-spacing-5xs: .125rem; + --canon-spacing-4xs: .25rem; + --canon-spacing-3xs: .375rem; + --canon-spacing-2xs: .5rem; + --canon-spacing-xs: .75rem; + --canon-spacing-sm: 1rem; + --canon-spacing-md: 1.5rem; + --canon-spacing-lg: 2rem; + --canon-spacing-xl: 2.5rem; + --canon-spacing-2xl: 3rem; + --canon-spacing-3xl: 3.5rem; + --canon-border-radius-2xs: .125rem; + --canon-border-radius-xs: .25rem; + --canon-border-radius-sm: .5rem; + --canon-border-radius-md: .75rem; + --canon-border-radius-lg: 1rem; + --canon-border-radius-xl: 1.25rem; + --canon-border-radius-2xl: 1.5rem; + --canon-container-max-width: 1200px; + --canon-container-padding: 1rem; + --canon-accent: #fff; + --canon-background: #000; + --canon-surface-1: #121212; + --canon-surface-2: #1a1a1a; + --canon-border-base: #fff3; + --canon-border-warning: #f50000; + --canon-border-error: #f87503; + --canon-border-selected: #25d262; + --canon-error: #f50000; + --canon-text-primary: #fff; + --canon-text-primary-on-accent: #000; + --canon-text-secondary: #b3b3b3; +} diff --git a/canon-docs/public/header.png b/canon-docs/public/header.png new file mode 100644 index 0000000000..507bd05ca7 Binary files /dev/null and b/canon-docs/public/header.png differ diff --git a/canon-docs/scripts/watch-css.js b/canon-docs/scripts/watch-css.js new file mode 100644 index 0000000000..b3cfedd570 --- /dev/null +++ b/canon-docs/scripts/watch-css.js @@ -0,0 +1,55 @@ +const fs = require('fs'); +const path = require('path'); +const chokidar = require('chokidar'); +const { bundle } = require('lightningcss'); + +const source = '../../packages/canon/src/css'; +const destination = '../public'; + +const source1 = path.join(__dirname, `${source}/core.css`); +const destination1 = path.join(__dirname, `${destination}/core.css`); +const source2 = path.join(__dirname, `${source}/components.css`); +const destination2 = path.join(__dirname, `${destination}/components.css`); +const source3 = path.join( + __dirname, + `../../packages/canon/.storybook/themes/backstage.css`, +); +const destination3 = path.join(__dirname, `${destination}/backstage.css`); + +// Function to bundle and copy the CSS file +const bundleAndCopyFile = async (source, destination) => { + try { + const result = await bundle({ + filename: source, + minify: false, + }); + + fs.writeFileSync(destination, result.code); + console.log('File bundled and copied successfully!'); + } catch (err) { + console.error('Error bundling file:', err); + } +}; + +// Watch the source file for changes +chokidar.watch(source1).on('change', () => { + console.log('Detected change in core.css, bundling and copying...'); + bundleAndCopyFile(source1, destination1); +}); + +// Watch the components.css file for changes +chokidar.watch(source2).on('change', () => { + console.log('Detected change in components.css, bundling and copying...'); + bundleAndCopyFile(source2, destination2); +}); + +// Watch the backstage.css file for changes +chokidar.watch(source3).on('change', () => { + console.log('Detected change in backstage.css, bundling and copying...'); + bundleAndCopyFile(source3, destination3); +}); + +// Initial bundle and copy +bundleAndCopyFile(source1, destination1); +bundleAndCopyFile(source2, destination2); +bundleAndCopyFile(source3, destination3); diff --git a/canon-docs/src/app/(docs)/about/page.mdx b/canon-docs/src/app/(docs)/about/page.mdx new file mode 100644 index 0000000000..a4c16ee79e --- /dev/null +++ b/canon-docs/src/app/(docs)/about/page.mdx @@ -0,0 +1,32 @@ +# About Canon + +Canon is a design system created specifically for Backstage, built with React, TypeScript, and vanilla CSS. +This open-source library is hosted in the Backstage monorepo. While it can be used in other projects, Canon +is designed to deliver a consistent, accessible, and extensible experience tailored to Backstage users. + +## Philosophy + +Backstage empowers product teams to build software faster and with greater quality. Its extensibility, +however, required us to rethink how to deliver a consistent and accessible user experience. Our goal is +to enable plugin creators to design plugins that seamlessly integrate with Backstage's look and feel while +still allowing customization to match individual brands. + +Instead of reinventing the wheel, we chose to focus on layout and styling while leveraging existing headless +component libraries for functionality. This approach allows us to dedicate our efforts to creating a cohesive +and flexible theming system. + +## Team + +Canon is designed and maintained primarily by Spotify's Backstage team, leveraging Spotify's expertise in +crafting high-quality design and technology. Drawing from our experience in building reliable and intuitive +user experiences for the music industry, we've created a design system that looks great and works seamlessly. + +## Community + +Canon is an open-source project and we welcome contributions from the community. If you are interested in +contributing to Canon, please read our [contributing guide](https://github.com/backstage/backstage/blob/master/CONTRIBUTING.md) +and our [code of conduct](https://github.com/backstage/backstage/blob/master/CODE_OF_CONDUCT.md). + +## License + +Canon is licensed under the Apache 2.0 license. See the [LICENSE](https://github.com/backstage/backstage/blob/master/LICENSE) file for more details. diff --git a/canon-docs/src/app/(docs)/components/box/page.mdx b/canon-docs/src/app/(docs)/components/box/page.mdx new file mode 100644 index 0000000000..2e1d00a274 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/box/page.mdx @@ -0,0 +1,112 @@ +import { CodeBlock } from '@/components/CodeBlock'; +import { PropsTable } from '@/components/PropsTable'; +import { spacePropsList } from '@/utils/spaceProps'; +import { Tabs } from '@/components/Tabs'; +import { Snippet } from '@/components/Snippet'; +import { BoxPreview } from '@/snippets/box'; + +# Box + +Box is the lowest-level component in Canon. It provides a consistent API for styling and layout. + +} + code={` + +`} + align="center" +/> + + + + Usage + + + `} /> + + + +## API reference + +### Box + +This is the Box component, our lowest-level component. Here are all the +available properties. + + + +Padding and margin are used to create space around your component using our +predefined spacing tokens. We would recommend to use padding over margin to +avoid collapsing margins but both are available. + + + +## Examples + +### Simple example + +A simple example of how to use the Box component. + +Hello World`} /> + +### Responsive + +Here's a view when buttons are responsive. + + + Hello World + `} +/> diff --git a/canon-docs/src/app/(docs)/components/button/page.mdx b/canon-docs/src/app/(docs)/components/button/page.mdx new file mode 100644 index 0000000000..c35c4888f3 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/button/page.mdx @@ -0,0 +1,175 @@ +import { PropsTable } from '@/components/PropsTable'; +import { Snippet } from '@/components/Snippet'; +import { Tabs } from '@/components/Tabs'; +import { CodeBlock } from '@/components/CodeBlock'; +import { + ButtonPreview, + ButtonSizes, + ButtonWithIcons, + ButtonFullWidth, + ButtonDisabled, + ButtonResponsive, +} from '@/snippets/button'; +import { buttonVariants } from '@/snippets/_snippets'; + +# Button + +A button component that can be used to trigger actions. + +} + code={` + + + +`} +/> + + + + Usage + Theming + + + +`} + /> + + + We recommend starting with our [global tokens](/theme/theming) to customize the library and align it with + your brand. For additional flexibility, you can use the provided class names for each element listed below. + `} + /> + + + + +## API reference + + + +## Examples + +### Variants + +Here's a view when buttons have different variants. + +} + code={buttonVariants} +/> + +### Sizes + +Here's a view when buttons have different sizes. + +} + code={` + + +`} +/> + +### With Icons + +Here's a view when buttons have icons. + +} + code={` + + + +`} +/> + +### Full width + +Here's a view when buttons are full width. + +} + code={` + +`} +/> + +### Disabled + +Here's a view when buttons are disabled. + +} + code={``} +/> + +### Responsive + +Here's a view when buttons are responsive. + +} + code={``} +/> diff --git a/canon-docs/src/app/(docs)/components/checkbox/page.mdx b/canon-docs/src/app/(docs)/components/checkbox/page.mdx new file mode 100644 index 0000000000..26a5d0f955 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/checkbox/page.mdx @@ -0,0 +1,107 @@ +import { PropsTable } from '@/components/PropsTable'; +import { CheckboxPreview, CheckboxAllVariants } from '@/snippets/checkbox'; +import { Snippet } from '@/components/Snippet'; +import { Tabs } from '@/components/Tabs'; +import { CodeBlock } from '@/components/CodeBlock'; +import { BaseUI } from '@/components/HeadlessBanners/BaseUI'; + +# Checkbox + +A checkbox component that can be used to trigger actions. + +} + code={``} +/> + + + + Usage + Theming + + + +`} + /> + + + We recommend starting with our [global tokens](/theme/theming) to customize the library and align it with + your brand. For additional flexibility, you can use the provided class names for each element listed below. + `} + /> + + + + +## API reference + + + + void", + responsive: false, + }, + disabled: { + type: 'boolean', + responsive: false, + }, + required: { + type: 'boolean', + responsive: false, + }, + name: { + type: 'string', + responsive: false, + }, + value: { + type: 'string', + responsive: false, + }, + className: { + type: 'string', + responsive: false, + }, + style: { + type: 'CSSProperties', + responsive: false, + }, + }} +/> + +## Examples + +### All variants + +Here's a view when checkboxes have different variants. + +} + code={` + + + + + `} +/> diff --git a/canon-docs/src/app/(docs)/components/container/page.mdx b/canon-docs/src/app/(docs)/components/container/page.mdx new file mode 100644 index 0000000000..ace3bdcaeb --- /dev/null +++ b/canon-docs/src/app/(docs)/components/container/page.mdx @@ -0,0 +1,101 @@ +import { CodeBlock } from '@/components/CodeBlock'; +import { PropsTable } from '@/components/PropsTable'; +import { spacePropsList } from '@/utils/spaceProps'; +import { Tabs } from '@/components/Tabs'; +import { Snippet } from '@/components/Snippet'; +import { ContainerPreview } from '@/snippets/container'; + +# Container + +The container component let you use our default max-width and center the +content on the page. + +} + code={` + +`} +/> + + + + Usage + + + Hello World! +`} /> + + + +## API reference + + + +## Examples + +### Simple + +A simple example of how to use the Container component. + + + Hello World + Hello World + Hello World +`} +/> + +### Responsive padding & margin + +The Container component also supports responsive values, making it easy to +create responsive designs. + + + Hello World + Hello World + Hello World +`} +/> diff --git a/canon-docs/src/app/(docs)/components/grid/page.mdx b/canon-docs/src/app/(docs)/components/grid/page.mdx new file mode 100644 index 0000000000..4e38fe39ec --- /dev/null +++ b/canon-docs/src/app/(docs)/components/grid/page.mdx @@ -0,0 +1,191 @@ +import { CodeBlock } from '@/components/CodeBlock'; +import { PropsTable } from '@/components/PropsTable'; +import { spacePropsList } from '@/utils/spaceProps'; +import { Tabs } from '@/components/Tabs'; +import { grid } from '@/snippets/_snippets'; +import { Snippet } from '@/components/Snippet'; +import { GridPreview } from '@/snippets/grid'; + +# Grid + +A layout component that helps to create simple column-based layouts as well as +more complex ones. + +} + code={` + + + +`} +/> + + + + Usage + + + + + + +## API reference + +### Grid + +This is the grid container component. It will help to define the number of +columns that will be used in the grid. You can also define the gap between the +columns. All values are responsive. + + + +The grid component also accepts all the spacing props from the Box component. + + + +### Grid.Item + +If you need more control over the columns, you can use the grid item +component. This will give you access to `rowSpan`, `colSpan`, `start` and +`end`. All values are responsive. This component is optional, you can use any +elements directly if you prefer. + + + +## Examples + +### Simple grid + +A simple grid with 3 columns and a gap of md. + + + Hello World + Hello World + Hello World + +`} +/> + +### Complex grid + +You can also use the grid item to create more complex layouts. In this example +the first column will span 1 column and the second column will span 2 columns. + + + + Hello World + + + Hello World + + +`} +/> + +### Mixing rows and columns + +The grid item component also supports the `rowSpan` prop, which allows you to +span multiple rows within the grid layout. In this example, the first item +will span 2 rows to achieve a dynamic and flexible grid structure. + + + + Hello World + + + Hello World + + + Hello World + + +`} +/> + +### Responsive grid + +The grid component also supports responsive values, making it easy to create +responsive designs. + + + + Hello World + + + Hello World + + +`} +/> + +### Start and End + +The start and end props can be used to position the item in the grid. + + + + Hello World + + +`} +/> diff --git a/canon-docs/src/app/(docs)/components/heading/page.mdx b/canon-docs/src/app/(docs)/components/heading/page.mdx new file mode 100644 index 0000000000..4e3b0aa46c --- /dev/null +++ b/canon-docs/src/app/(docs)/components/heading/page.mdx @@ -0,0 +1,97 @@ +import { PropsTable } from '@/components/PropsTable'; +import { + HeadingPreview, + HeadingAllVariants, + HeadingResponsive, +} from '@/snippets/heading'; +import { Snippet } from '@/components/Snippet'; +import { Tabs } from '@/components/Tabs'; +import { CodeBlock } from '@/components/CodeBlock'; + +# Heading + +Headings are used to structure the content of your page. + +} + code={`Hello World!`} +/> + + + + Usage + Theming + + + +`} + /> + + + We recommend starting with our [global tokens](/theme/theming) to customize the library and align it with + your brand. For additional flexibility, you can use the provided class names for each element listed below. + `} + /> + + + + +## API reference + + + +## Examples + +### All variants + +The `Heading` component has a `variant` prop that can be used to change the +appearance of the heading. + +} + code={` + Display + Title 1 + Title 2 + Title 3 + Title 4 +`} +/> + +### Responsive + +You can also use the `variant` prop to change the appearance of the text based +on the screen size. + +} + code={`Responsive`} +/> diff --git a/canon-docs/src/app/(docs)/components/icon/page.mdx b/canon-docs/src/app/(docs)/components/icon/page.mdx new file mode 100644 index 0000000000..b85b33190d --- /dev/null +++ b/canon-docs/src/app/(docs)/components/icon/page.mdx @@ -0,0 +1,63 @@ +import { PropsTable } from '@/components/PropsTable'; +import { icons } from '@backstage/canon'; +import { IconPreview } from '@/snippets/icon'; +import { Snippet } from '@/components/Snippet'; +import { Tabs } from '@/components/Tabs'; +import { CodeBlock } from '@/components/CodeBlock'; + +# Icon + +Icons are used to represent an action or a state. + +} + code={``} +/> + + + + Usage + Theming + + + +`} + /> + + + We recommend starting with our [global tokens](/theme/theming) to customize the library and align it with + your brand. For additional flexibility, you can use the provided class names for each element listed below. + `} + /> + + + + +## API reference + + diff --git a/canon-docs/src/app/(docs)/components/inline/page.mdx b/canon-docs/src/app/(docs)/components/inline/page.mdx new file mode 100644 index 0000000000..ac4d7e0401 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/inline/page.mdx @@ -0,0 +1,118 @@ +import { CodeBlock } from '@/components/CodeBlock'; +import { PropsTable } from '@/components/PropsTable'; +import { spacePropsList } from '@/utils/spaceProps'; +import { Tabs } from '@/components/Tabs'; +import { Snippet } from '@/components/Snippet'; +import { InlinePreview } from '@/snippets/inline'; + +# Inline + +The Inline component is used to create a horizontal layout of elements. + +} + code={` + + + +`} +/> + + + + Usage + + + +`} + /> + + + +## API reference + + + +The grid component also accepts all the spacing props from the Box component. + + + +## Examples + +### Simple + +A simple example of how to use the Inline component. + + + Hello World + Hello World + Hello World +`} +/> + +### Responsive + +The Inline component also supports responsive values, making it easy to create +responsive designs. + + + Hello World + Hello World + Hello World +`} +/> + +### Align + +The Inline component also supports responsive alignment, making it easy to +create responsive designs. + + + Hello World + Hello World + Hello World +`} +/> + +### Align vertically + +The Inline component also supports responsive vertical alignment, making it +easy to create responsive designs. + + + Hello World + Hello World + Hello World +`} +/> diff --git a/canon-docs/src/app/(docs)/components/stack/page.mdx b/canon-docs/src/app/(docs)/components/stack/page.mdx new file mode 100644 index 0000000000..7ef25c00b7 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/stack/page.mdx @@ -0,0 +1,101 @@ +import { PropsTable } from '@/components/PropsTable'; +import { spacePropsList } from '@/utils/spaceProps'; +import { Tabs } from '@/components/Tabs'; +import { CodeBlock } from '@/components/CodeBlock'; +import { + stackFAQ1, + stackSimple, + stackResponsive, + stackAlign, +} from '@/snippets/_snippets'; +import { Snippet } from '@/components/Snippet'; +import { StackPreview } from '@/snippets/stack'; + +# Stack + +This is the stack container component. It will help to define the number of +columns that will be used in the grid. You can also define the gap between the +columns. All values are responsive. + +} + code={` + + + +`} +/> + + + + Usage + + + +`} + /> + + + +## API reference + + + +The grid component also accepts all the spacing props from the Box component. + + + +## Common questions + +### Can I stack horizontally? + +The Stack component only allows for stacking elements vertically. If you want +to create a column layout, please use the Grid component. + + + +## Examples + +### Simple + +A simple example of how to use the Stack component. + + + +### Responsive + +The Stack component also supports responsive values, making it easy to create +responsive designs. + + + +### Align + +The Stack component also supports responsive alignment, making it easy to +create responsive designs. + + diff --git a/canon-docs/src/app/(docs)/components/table/page.mdx b/canon-docs/src/app/(docs)/components/table/page.mdx new file mode 100644 index 0000000000..f91505acf6 --- /dev/null +++ b/canon-docs/src/app/(docs)/components/table/page.mdx @@ -0,0 +1 @@ +# Table diff --git a/canon-docs/src/app/(docs)/components/text/page.mdx b/canon-docs/src/app/(docs)/components/text/page.mdx new file mode 100644 index 0000000000..79f9f96a6b --- /dev/null +++ b/canon-docs/src/app/(docs)/components/text/page.mdx @@ -0,0 +1,141 @@ +import { PropsTable } from '@/components/PropsTable'; +import { + TextPreview, + TextAllVariants, + TextResponsive, + TextAllWeights, +} from '@/snippets/text'; +import { Snippet } from '@/components/Snippet'; +import { Tabs } from '@/components/Tabs'; +import { CodeBlock } from '@/components/CodeBlock'; + +# Text + +The `Text` component is used to display content on your page. + +} + code={` + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is in + the painting? + `} +/> + + + + Usage + Theming + + + +`} + /> + + + We recommend starting with our [global tokens](/theme/theming) to customize the library and align it with + your brand. For additional flexibility, you can use the provided class names for each element listed below. + `} + /> + + + + +## API reference + + + +## Examples + +### All variants + +The `Text` component has a `variant` prop that can be used to change the +appearance of the text. + +} + code={` + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + `} +/> + +### All weights + +The `Text` component has a `weight` prop that can be used to change the +appearance of the text. + +} + code={` + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + `} +/> + +### Responsive + +You can also use the `variant` prop to change the appearance of the text based +on the screen size. + +} + code={`Responsive`} +/> diff --git a/canon-docs/src/app/(docs)/layout.module.css b/canon-docs/src/app/(docs)/layout.module.css new file mode 100644 index 0000000000..fa94ef3a13 --- /dev/null +++ b/canon-docs/src/app/(docs)/layout.module.css @@ -0,0 +1,6 @@ +.pageContainer { + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 0 24px 64px; +} diff --git a/canon-docs/src/app/(docs)/layout.tsx b/canon-docs/src/app/(docs)/layout.tsx new file mode 100644 index 0000000000..161523bbf5 --- /dev/null +++ b/canon-docs/src/app/(docs)/layout.tsx @@ -0,0 +1,16 @@ +import type { Metadata } from 'next'; + +import styles from './layout.module.css'; + +export const metadata: Metadata = { + title: 'Canon', + description: 'UI library for Backstage', +}; + +export default function DocsLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return
{children}
; +} diff --git a/canon-docs/src/app/(docs)/page.mdx b/canon-docs/src/app/(docs)/page.mdx new file mode 100644 index 0000000000..09d4d83ea3 --- /dev/null +++ b/canon-docs/src/app/(docs)/page.mdx @@ -0,0 +1,64 @@ +import { CodeBlock } from '@/components/CodeBlock'; + + + +Welcome to the Canon, the new design library for Backstage plugins. This +project is still under active development but we will make sure to document +the API as we go. We are aiming to improve the general UI of Backstage and +plugins across Backstage. This new library will take time to build but we are +building it incrementally with not conflict with the existing theming system. + +## Installation + +### 1. Install canon + +Install Canon using a package manager. + + + +### 2. Import the css files + +Import the global CSS file at the root of your application. + +```tsx +import '@backstage/canon/css/core.css'; +import '@backstage/canon/css/components.css'; +``` + +### 3. Add the theme provider + +Add the theme provider to your application. + +```tsx +import { ThemeProvider } from '@backstage/canon'; + + + +; +``` + +### 4. Start building ✨ + +Now you can start building your plugin using the new design system. + +```tsx +import { Stack, Button } from '@backstage/canon'; + + + Hello World + +; +``` + +## Roadmap + +You can check our roadmap [on GitHub](https://github.com/orgs/backstage/projects/10). We'll do our best to keep you updated on the progress. + +## Next steps + +Now that you have the basics down, you can start building your plugin using the new design system. +Please familiarise yourself first with our theming principles. This will help you understand the core concepts of the design system. +If you have any questions, please reach out to us on [Discord](https://discord.gg/MUpMjP2). diff --git a/canon-docs/src/app/(docs)/theme/iconography/page.mdx b/canon-docs/src/app/(docs)/theme/iconography/page.mdx new file mode 100644 index 0000000000..9083c93389 --- /dev/null +++ b/canon-docs/src/app/(docs)/theme/iconography/page.mdx @@ -0,0 +1,16 @@ +import { CodeBlock } from '@/components/CodeBlock'; +import { IconLibrary } from '@/components/IconLibrary'; + +# Iconography + +All our default icons are provided by [Remix Icon](https://remixicon.com/). We +don't import all icons to reduce the bundle size but we cherry pick a nice +selection for you to use in your application. The list of names is set down +below. To use an icon, you can use the `Icon` component and pass the name of +the icon you want to use. + +`} /> + +## Icon library + + diff --git a/canon-docs/src/app/(docs)/theme/layout/page.mdx b/canon-docs/src/app/(docs)/theme/layout/page.mdx new file mode 100644 index 0000000000..dc3a5d4585 --- /dev/null +++ b/canon-docs/src/app/(docs)/theme/layout/page.mdx @@ -0,0 +1,42 @@ +import { LayoutComponents } from '@/components/LayoutComponents'; +import { CodeBlock } from '@/components/CodeBlock'; + +# Layout + +Canon is made for extensibility. We built this library to make it easy for any +Backstage plugin creator to be able to build their ideas at speed ensuring +consistency across the rest of your ecosystem. Each component is designed to +be editable to match your need but sometimes you want to have more control +over the layout of your page. To help you with that, we created a set of +layout components that you can use to build your own layouts. All of these +components are built to extend on our theming system, making it easy for you +to build your own layouts. Sometimes these components are not enough so we +created a set of helpers to be used with any CSS-in-JS library. + +## Layout Components + +We built a couple of layout components to help you build responsive elements +that will be consistent with the rest of your Backstage instance. These +components are opinionated and use TypeScript to ensure that the props you +provide are the ones coming from the theme. + + + Hello World + + Project 1 + Project 2 + + +`} +/> + + + +## Layout Helpers + +Sometimes you want to use global tokens dynamically outside of React +components. To help you with that we would like to provide a set of helpers +that you can use in your code. These helpers are not available just yet but we +are working on it. diff --git a/canon-docs/src/app/(docs)/theme/responsive/page.mdx b/canon-docs/src/app/(docs)/theme/responsive/page.mdx new file mode 100644 index 0000000000..cdbd82533c --- /dev/null +++ b/canon-docs/src/app/(docs)/theme/responsive/page.mdx @@ -0,0 +1,123 @@ +import * as Table from '@/components/Table'; +import { Chip } from '@/components/Chip'; +import { CodeBlock } from '@/components/CodeBlock'; + +# Responsive + +Canon is built on a responsive design system, meaning that the components are +designed to adapt to different screen sizes. By default we offer a set of +breakpoints that you can use to create responsive components. + +## Breakpoints + + + + + Breakpoint prefix + Minimum width + CSS + + + + + + xs + + + 0px + + + {`{ ... }`} + + + + + sm + + + 640px + + + {`@media (min-width: 640px) { ... }`} + + + + + md + + + 768px + + + {`@media (min-width: 768px) { ... }`} + + + + + lg + + + 1024px + + + {`@media (min-width: 1024px) { ... }`} + + + + + xl + + + 1280px + + + {`@media (min-width: 1280px) { ... }`} + + + + + 2xl + + + 1536px + + + {`@media (min-width: 1536px) { ... }`} + + + + + +## Responsive components + +Canon components are designed to be responsive, meaning that they will adapt +to different screen sizes. Not every component is responsive, but the ones +that are will have a prop to control the responsive behavior. + +The behaviour is the same for each component. For each prop, instead of adding +the value, you add an object with the value and the breakpoint prefix. + +Button + +// Responsive value + +`} /> + +## How to update breakpoints + +The set of keys are not to be changed, but you can update the minimum width of +each breakpoint in the theme provider. + +`} +/> diff --git a/canon-docs/src/app/(docs)/theme/theming/page.mdx b/canon-docs/src/app/(docs)/theme/theming/page.mdx new file mode 100644 index 0000000000..421b315a7b --- /dev/null +++ b/canon-docs/src/app/(docs)/theme/theming/page.mdx @@ -0,0 +1,220 @@ +import { CodeBlock } from '@/components/CodeBlock'; +import * as Table from '@/components/Table'; +import { Chip } from '@/components/Chip'; + +# Theming + +Backstage ships with a default theme with a light and dark mode variant. The +themes are provided as a part of the `@backstage/canon` package, which also +includes utilities for customizing the default theme, or creating completely +new themes. + +## Light & Dark modes + +By default we are supporting both light and dark modes. Each user can opt to +choose what theme they want to use or to use their system decide what theme to +use. If you want to create your own theme, you will have to set both light and +dark themes following the instructions below. If you only set one of them, the +other mode will fallback to the default theme. + +## How to create your own theme + +To create your own theme, you will have to define the variables below. To do +that, create a theme.css file and import it in your application. Here's an +example below on how to set your light and dark mode. + + + +## Colors + +We provide a set of generic colours tokens that we use across Canon. By +changing these colours you can easily change the look and feel of your +application to match your brand. + + + + + Prop + Description + + + + + + --canon-accent + + The accent color for the theme. + + + + --canon-bg + + The background color for the theme. + + + + --canon-surface-1 + + The first surface color for the theme. + + + + --canon-surface-2 + + The second surface color for the theme. + + + + --canon-outline + + The outline color for the theme. + + + + --canon-outline-focus + + The outline focus color for the theme. + + + + --canon-text-primary + + The primary text color for the theme. + + + + --canon-text-secondary + + The secondary text color for the theme. + + + + +## Typography + +We have two fonts that we use across Canon. The first one is the sans-serif +font that we use for the body of the application. The second one is the +monospace font that we use for code blocks and tables. + + + + + Prop + Description + + + + + + --canon-font-regular + + The sans-serif font for the theme. + + + + --canon-font-mono + + The monospace font for the theme. + + + + +## Spacing + +Our default spacing system is made to work in most scenarios. We have 7 scale +values from `xxs` to `xxl`. We use the values on padding and margin in our +layout components mostly. If you prefer to use a different spacing system, you +can do that by changing the values below. + + + + + Prop + Description + + + + + + --canon-space-unit + + + The base unit for the spacing system. Default value is `1em` + + + + + --canon-space-xxs + + Default value is `0.25 x space unit` + + + + --canon-space-xs + + Default value is `0.5 x space unit` + + + + --canon-space-sm + + Default value is `0.75 x space unit` + + + + --canon-space-md + + Default value is `1.25 x space unit` + + + + --canon-space-lg + + Default value is `2 x space unit` + + + + --canon-space-xl + + Default value is `3.25 x space unit` + + + + --canon-space-xxl + + Default value is `5.25 x space unit` + + + diff --git a/canon-docs/src/app/(docs)/theme/typography/page.mdx b/canon-docs/src/app/(docs)/theme/typography/page.mdx new file mode 100644 index 0000000000..86be4d2e19 --- /dev/null +++ b/canon-docs/src/app/(docs)/theme/typography/page.mdx @@ -0,0 +1,66 @@ +import { HeadingAllVariants } from '@/snippets/heading'; +import { TextAllVariants } from '@/snippets/text'; +import { Snippet } from '@/components/Snippet'; + +# Typography + +Canon offers a suite of typography components designed to seamlessly align +with the rest of your Backstage instance. While you can customize their +appearance to match your brand, the underlying API remains consistent and +unchanged. Each component is built on a responsive structure, allowing you to +define different typography values for various breakpoints. + +## Headings + +Headings are used to structure the content of your page. They are used to +create a hierarchy of information and to make the content more readable. The +best way to use add these headings to your page is to import the [Heading +component](?path=/docs/components-heading--docs). + +} + code={` + Display + Title 1 + Title 2 + Title 3 + Title 4 +`} +/> + +## Text + +Canon provides four distinct text variants, each offering different font sizes +carefully designed to cover the majority of use cases. These variants are +versatile and can be paired with regular and bold of font weights. You can use +the [Text component](?path=/docs/components-text--docs) to add text to your +page. + +} + code={` + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + `} +/> diff --git a/canon-docs/src/app/(playground)/playground/page.tsx b/canon-docs/src/app/(playground)/playground/page.tsx new file mode 100644 index 0000000000..c36a1d3492 --- /dev/null +++ b/canon-docs/src/app/(playground)/playground/page.tsx @@ -0,0 +1,82 @@ +'use client'; + +import { ReactNode } from 'react'; +import { Grid, Stack, Text } from '../../../../../packages/canon'; +import { screenSizes } from '@/utils/data'; +import { Frame } from '@/components/Frame'; +import { usePlayground } from '@/utils/playground-context'; +import { ButtonPlayground } from '@/snippets/button'; +import { CheckboxPlayground } from '@/snippets/checkbox'; +import { HeadingPlayground } from '@/snippets/heading'; +import { TextPlayground } from '@/snippets/text'; + +import styles from './styles.module.css'; + +export default function PlaygroundPage() { + const { selectedScreenSizes } = usePlayground(); + + const filteredScreenSizes = screenSizes.filter(item => + selectedScreenSizes.includes(item.slug), + ); + + if (filteredScreenSizes.length === 0) { + return ( +
+ +
+ ); + } + + return ( +
+ {filteredScreenSizes.map(screenSize => ( +
+ + {screenSize.title} - {screenSize.width}px + +
+ + + +
+
+ ))} +
+ ); +} + +const Content = () => { + const { selectedComponents } = usePlayground(); + + return ( + + {selectedComponents.find(c => c === 'button') && ( + } title="Button" /> + )} + {selectedComponents.find(c => c === 'checkbox') && ( + } title="Checkbox" /> + )} + {selectedComponents.find(c => c === 'heading') && ( + } title="Heading" /> + )} + {selectedComponents.find(c => c === 'text') && ( + } title="Text" /> + )} + + ); +}; + +const Line = ({ content, title }: { content: ReactNode; title: string }) => { + return ( + + + {title} + + {content} + + ); +}; diff --git a/canon-docs/src/app/(playground)/playground/styles.module.css b/canon-docs/src/app/(playground)/playground/styles.module.css new file mode 100644 index 0000000000..5280021836 --- /dev/null +++ b/canon-docs/src/app/(playground)/playground/styles.module.css @@ -0,0 +1,36 @@ +.container { + height: 100vh; + display: flex; + flex-direction: row; + gap: 24px; + overflow-x: scroll; +} + +.containerEmpty { + padding: 78px 40px; +} + +.breakpointContainer { + flex-shrink: 0; + margin-top: 40px; + height: calc(100vh - 86px); + display: flex; + flex-direction: column; + gap: 8px; + + &:first-child { + margin-left: 48px; + } + + &:last-child { + margin-right: 48px; + } +} + +.breakpointContent { + height: 100%; + border-radius: 4px; + border: 1px solid var(--canon-border-base); + background-color: var(--canon-background-base); + padding: 16px; +} diff --git a/canon-docs/src/app/globals.css b/canon-docs/src/app/globals.css new file mode 100644 index 0000000000..de791f589a --- /dev/null +++ b/canon-docs/src/app/globals.css @@ -0,0 +1,33 @@ +body { + display: flex; + flex-direction: row; + background-color: var(--canon-background); + color: var(--canon-text-primary); + transition: background-color 0.2s ease-in-out; +} + +iframe { + border: none; + width: 100%; +} + +.shiki { + margin: 0; +} + +.shiki, +.shiki span { + background-color: transparent !important; + font-family: var(--canon-font-monospace); + font-size: 0.875rem; + line-height: 1.7; +} + +[data-theme='dark'] .shiki, +[data-theme='dark'] .shiki span { + color: var(--shiki-dark) !important; + /* Optional, if you also want font styles */ + font-style: var(--shiki-dark-font-style) !important; + font-weight: var(--shiki-dark-font-weight) !important; + text-decoration: var(--shiki-dark-text-decoration) !important; +} diff --git a/canon-docs/src/app/icon.svg b/canon-docs/src/app/icon.svg new file mode 100644 index 0000000000..12cad81e95 --- /dev/null +++ b/canon-docs/src/app/icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/canon-docs/src/app/layout.tsx b/canon-docs/src/app/layout.tsx new file mode 100644 index 0000000000..f51e130a67 --- /dev/null +++ b/canon-docs/src/app/layout.tsx @@ -0,0 +1,43 @@ +import type { Metadata } from 'next'; +import { Sidebar } from '../components/Sidebar'; + +import styles from './page.module.css'; +import { Providers } from './providers'; + +import './globals.css'; +import '/public/core.css'; +import '/public/components.css'; +import '/public/backstage.css'; + +export const metadata: Metadata = { + title: 'Canon', + description: 'UI library for Backstage', +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + // const cookieStore = await cookies(); + // const theme = cookieStore.get('theme')?.value || 'light'; + // const themeName = cookieStore.get('theme-name')?.value || 'default'; + + return ( + + + +
+ +
{children}
+
+
+ + + ); +} diff --git a/canon-docs/src/app/page.module.css b/canon-docs/src/app/page.module.css new file mode 100644 index 0000000000..9119d2e9c5 --- /dev/null +++ b/canon-docs/src/app/page.module.css @@ -0,0 +1,44 @@ +.global { + width: 100%; +} + +.container { + padding-left: 300px; + width: 100%; +} + +.page { + flex: 1; +} + +.page p { + color: var(--canon-text-primary); + font-size: 1rem; + line-height: 1.5rem; + margin-top: 0; + margin-bottom: 1rem; +} + +.content { + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 64px 24px 64px; +} + +.header { + width: 100%; + margin-bottom: 64px; +} + +.header img { + width: 100%; + height: auto; +} + +.pageContainer { + width: 100%; + max-width: 960px; + margin: 0 auto; + padding: 0 24px 64px; +} diff --git a/canon-docs/src/app/providers.tsx b/canon-docs/src/app/providers.tsx new file mode 100644 index 0000000000..81a18136e8 --- /dev/null +++ b/canon-docs/src/app/providers.tsx @@ -0,0 +1,13 @@ +'use client'; + +import { ReactNode } from 'react'; +import { CanonProvider } from '../../../packages/canon/src/contexts/canon'; +import { PlaygroundProvider } from '@/utils/playground-context'; + +export const Providers = ({ children }: { children: ReactNode }) => { + return ( + + {children} + + ); +}; diff --git a/canon-docs/src/components/Banner/Banner.tsx b/canon-docs/src/components/Banner/Banner.tsx new file mode 100644 index 0000000000..18aecba79f --- /dev/null +++ b/canon-docs/src/components/Banner/Banner.tsx @@ -0,0 +1,42 @@ +/* + * Copyright 2024 The Backstage 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. + */ +import React from 'react'; +import styles from './styles.module.css'; + +export const Banner = ({ + variant = 'info', + text, +}: { + variant?: 'info' | 'warning'; + text?: string; +}) => { + return ( +
+
+ + + +
+
{text}
+
+ ); +}; diff --git a/packages/canon/src/components/Table/stories/TableFooter.stories.tsx b/canon-docs/src/components/Banner/index.ts similarity index 64% rename from packages/canon/src/components/Table/stories/TableFooter.stories.tsx rename to canon-docs/src/components/Banner/index.ts index b7dbacbc30..31f4aa88b0 100644 --- a/packages/canon/src/components/Table/stories/TableFooter.stories.tsx +++ b/canon-docs/src/components/Banner/index.ts @@ -13,18 +13,4 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import type { Meta, StoryObj } from '@storybook/react'; -import { TableFooter } from '../Table'; - -const meta = { - title: 'Components/Table/Components/TableFooter', - component: TableFooter, -} satisfies Meta; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - args: {}, -}; +export { Banner } from './Banner'; diff --git a/canon-docs/src/components/Banner/styles.module.css b/canon-docs/src/components/Banner/styles.module.css new file mode 100644 index 0000000000..9666c5d521 --- /dev/null +++ b/canon-docs/src/components/Banner/styles.module.css @@ -0,0 +1,41 @@ +.banner { + display: flex; + align-items: center; + font-size: 16px; + line-height: 28px; + padding: 16px; + border-radius: 6px; + margin-bottom: 16px; + border: 1px solid #e0e0e0; + + & > p { + margin: 0; + } +} + +.info { + background-color: #f2f2f2; + border-color: #cdcdcd; + color: #888888; +} + +.warning { + background-color: #fff2b9; + border-color: #ffd000; + color: #d79927; +} + +.icon { + width: 32px; + height: 32px; + background-color: rgba(215, 153, 39, 0.2); + border-radius: 6px; + margin-right: 16px; + display: flex; + align-items: center; + justify-content: center; +} + +.text { + line-height: 1.5; +} diff --git a/packages/canon/src/components/Table/stories/TableHead.stories.tsx b/canon-docs/src/components/Chip/Chip.tsx similarity index 65% rename from packages/canon/src/components/Table/stories/TableHead.stories.tsx rename to canon-docs/src/components/Chip/Chip.tsx index c7cfac51e8..d6a74502e0 100644 --- a/packages/canon/src/components/Table/stories/TableHead.stories.tsx +++ b/canon-docs/src/components/Chip/Chip.tsx @@ -14,17 +14,19 @@ * limitations under the License. */ -import type { Meta, StoryObj } from '@storybook/react'; -import { TableHead } from '../Table'; +import React from 'react'; +import styles from './styles.module.css'; -const meta = { - title: 'Components/Table/Components/TableHead', - component: TableHead, -} satisfies Meta; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - args: {}, +export const Chip = ({ + children, + head = false, +}: { + children: React.ReactNode; + head?: boolean; +}) => { + return ( + + {children} + + ); }; diff --git a/canon-docs/src/components/Chip/index.ts b/canon-docs/src/components/Chip/index.ts new file mode 100644 index 0000000000..ff9e4794c5 --- /dev/null +++ b/canon-docs/src/components/Chip/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export { Chip } from './Chip'; diff --git a/packages/canon/src/components/Table/stories/Table.stories.tsx b/canon-docs/src/components/Chip/styles.module.css similarity index 56% rename from packages/canon/src/components/Table/stories/Table.stories.tsx rename to canon-docs/src/components/Chip/styles.module.css index 2267b77093..44337afb0a 100644 --- a/packages/canon/src/components/Table/stories/Table.stories.tsx +++ b/canon-docs/src/components/Chip/styles.module.css @@ -14,19 +14,30 @@ * limitations under the License. */ -import type { Meta, StoryObj } from '@storybook/react'; -import { Table } from '../Table'; +.chip { + display: inline-flex; + align-items: center; + font-family: monospace; + font-size: 13px; + border-radius: 6px; + padding: 0px 8px; + height: 24px; + margin-right: 4px; + background-color: #f0f0f0; + color: #5d5d5d; + transition: background-color 0.2s ease-in-out; +} -const meta = { - title: 'Components/Table/Components/Table', - component: Table, -} satisfies Meta; +.head { + background-color: #eaf2fd; + color: #2563eb; +} -export default meta; -type Story = StoryObj; +[data-theme='dark'] .chip { + background-color: #2c2c2c; + color: #fff; +} -export const Default: Story = { - args: { - children: "Hello World! I'm a basic table", - }, -}; +[data-theme='dark'] .chip.head { + background-color: #26417b; +} diff --git a/canon-docs/src/components/CodeBlock/index.tsx b/canon-docs/src/components/CodeBlock/index.tsx new file mode 100644 index 0000000000..bbcf4d63da --- /dev/null +++ b/canon-docs/src/components/CodeBlock/index.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import type { BundledLanguage } from 'shiki'; +import { codeToHtml } from 'shiki'; +import { Text } from '../../../../packages/canon/src/components/Text'; +import styles from './styles.module.css'; + +interface CodeBlockProps { + lang?: BundledLanguage; + title?: string; + code?: string; +} + +export async function CodeBlock({ lang = 'tsx', title, code }: CodeBlockProps) { + const out = await codeToHtml(code || '', { + lang: lang, + themes: { + light: 'min-light', + dark: 'min-dark', + }, + }); + + return ( +
+ {title && ( +
+ {title} +
+ )} +
+
+ ); +} diff --git a/canon-docs/src/components/CodeBlock/styles.module.css b/canon-docs/src/components/CodeBlock/styles.module.css new file mode 100644 index 0000000000..e74714e07c --- /dev/null +++ b/canon-docs/src/components/CodeBlock/styles.module.css @@ -0,0 +1,26 @@ +.codeBlock { + border-radius: 4px; + border: 1px solid var(--canon-border-base); + position: relative; + background: transparent; + overflow-x: auto; + font-family: var(--canon-font-monospace); + background-color: #fff; + transition: background-color 0.2s ease-in-out; + margin-bottom: 1rem; +} + +[data-theme='dark'] .codeBlock { + background-color: #121212; +} + +.title { + border-bottom: 1px solid var(--canon-border-base); + padding: 12px 20px; + font-size: 0.875rem; + color: var(--canon-text-secondary); +} + +.code { + padding: 20px; +} diff --git a/packages/canon/src/components/Table/stories/TableCell.stories.tsx b/canon-docs/src/components/Columns/Columns.tsx similarity index 65% rename from packages/canon/src/components/Table/stories/TableCell.stories.tsx rename to canon-docs/src/components/Columns/Columns.tsx index 126b72bf95..115ec50010 100644 --- a/packages/canon/src/components/Table/stories/TableCell.stories.tsx +++ b/canon-docs/src/components/Columns/Columns.tsx @@ -14,17 +14,18 @@ * limitations under the License. */ -import type { Meta, StoryObj } from '@storybook/react'; -import { TableCell } from '../Table'; +import React from 'react'; -const meta = { - title: 'Components/Table/Components/TableCell', - component: TableCell, -} satisfies Meta; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - args: {}, +export const Columns = ({ + children, + style, +}: { + children: React.ReactNode; + style?: React.CSSProperties; +}) => { + return ( +
+ {children} +
+ ); }; diff --git a/canon-docs/src/components/Columns/index.ts b/canon-docs/src/components/Columns/index.ts new file mode 100644 index 0000000000..05de0850be --- /dev/null +++ b/canon-docs/src/components/Columns/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export { Columns } from './Columns'; diff --git a/plugins/search-backend-module-catalog/src/alpha.ts b/canon-docs/src/components/Columns/styles.css similarity index 84% rename from plugins/search-backend-module-catalog/src/alpha.ts rename to canon-docs/src/components/Columns/styles.css index e5554e85bd..c34acfc406 100644 --- a/plugins/search-backend-module-catalog/src/alpha.ts +++ b/canon-docs/src/components/Columns/styles.css @@ -14,8 +14,9 @@ * limitations under the License. */ -import { default as feature } from './module'; - -/** @alpha */ -const _feature = feature; -export default _feature; +.columns { + display: grid; + grid-template-columns: repeat(3, 1fr); + row-gap: 20px; + column-gap: 80px; +} diff --git a/canon-docs/src/components/DecorativeBox/index.tsx b/canon-docs/src/components/DecorativeBox/index.tsx new file mode 100644 index 0000000000..a5c20725bc --- /dev/null +++ b/canon-docs/src/components/DecorativeBox/index.tsx @@ -0,0 +1,5 @@ +import styles from './styles.module.css'; + +export const DecorativeBox = () => { + return
; +}; diff --git a/canon-docs/src/components/DecorativeBox/styles.module.css b/canon-docs/src/components/DecorativeBox/styles.module.css new file mode 100644 index 0000000000..84a6b579a0 --- /dev/null +++ b/canon-docs/src/components/DecorativeBox/styles.module.css @@ -0,0 +1,8 @@ +.box { + min-width: 64px; + min-height: 64px; + background-color: #eaf2fd; + border-radius: 4px; + box-shadow: 0 0 0 1px #2563eb; + background-image: url("data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%232563eb' fill-opacity='0.3' fill-rule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E"); +} diff --git a/canon-docs/src/components/Frame/index.tsx b/canon-docs/src/components/Frame/index.tsx new file mode 100644 index 0000000000..c7e930df74 --- /dev/null +++ b/canon-docs/src/components/Frame/index.tsx @@ -0,0 +1,33 @@ +/* eslint-disable @next/next/no-css-tags */ +'use client'; + +import { useEffect, useState } from 'react'; +import ReactFrame from 'react-frame-component'; + +export const Frame = ({ children }: { children: React.ReactNode }) => { + const [show, setShow] = useState(false); + + useEffect(() => { + setShow(true); + }, []); + + if (!show) return null; + + return ( +
`} + mountTarget=".frame-root" + head={ + <> + + + + + } + > + {children} +
+ ); +}; diff --git a/canon-docs/src/components/HeadlessBanners/BaseUI.tsx b/canon-docs/src/components/HeadlessBanners/BaseUI.tsx new file mode 100644 index 0000000000..6d3a727333 --- /dev/null +++ b/canon-docs/src/components/HeadlessBanners/BaseUI.tsx @@ -0,0 +1,43 @@ +import styles from './styles.module.css'; +import { Text } from '../../../../packages/canon/src/components/Text'; +import { Icon } from '../../../../packages/canon/src/components/Icon'; + +interface BaseUIProps { + href: string; +} + +export const BaseUI = ({ href }: BaseUIProps) => { + return ( +
+ + + + +
+ + Base UI + +
+ + This component is using Base UI under the hood. While most of the + original props are available, we have made some changes to the API + to fit our needs. + +
+ {href && ( + + Discover more + + + )} +
+
+ ); +}; diff --git a/canon-docs/src/components/HeadlessBanners/styles.module.css b/canon-docs/src/components/HeadlessBanners/styles.module.css new file mode 100644 index 0000000000..c8eb2bc68d --- /dev/null +++ b/canon-docs/src/components/HeadlessBanners/styles.module.css @@ -0,0 +1,42 @@ +.container { + display: flex; + background-color: var(--canon-surface-1); + padding: var(--canon-spacing-md); + border-radius: var(--canon-border-radius-xs); + border: 1px solid var(--canon-border-base); + margin-bottom: var(--canon-spacing-md); + gap: var(--canon-spacing-md); + transition: background-color 0.2s ease-in-out; +} + +.icon path { + fill: var(--canon-text-primary); +} + +.content { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.description { + max-width: 700px; +} + +.button { + all: unset; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + background-color: var(--canon-surface-2); + border: 1px solid var(--canon-border-base); + border-radius: var(--canon-border-radius-xs); + padding: 0 var(--canon-spacing-xs); + height: 28px; + border-radius: 100px; + margin-top: var(--canon-spacing-xs); + font-size: var(--canon-font-size-body); + color: var(--canon-text-primary); + gap: var(--canon-spacing-2xs); +} diff --git a/canon-docs/src/components/IconLibrary/IconLibrary.tsx b/canon-docs/src/components/IconLibrary/IconLibrary.tsx new file mode 100644 index 0000000000..b8ca8acdea --- /dev/null +++ b/canon-docs/src/components/IconLibrary/IconLibrary.tsx @@ -0,0 +1,39 @@ +/* + * Copyright 2024 The Backstage 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. + */ + +import React from 'react'; +import { Icon } from '../../../../packages/canon/src/components/Icon'; +import type { IconNames } from '../../../../packages/canon/src/components/Icon'; +import { Text } from '../../../../packages/canon/src/components/Text'; +import { icons } from '../../../../packages/canon/src/components/Icon/icons'; +import styles from './styles.module.css'; + +export const IconLibrary = () => { + const list = Object.keys(icons); + + return ( +
+ {list.map(icon => ( +
+
+ +
+ {icon} +
+ ))} +
+ ); +}; diff --git a/canon-docs/src/components/IconLibrary/index.ts b/canon-docs/src/components/IconLibrary/index.ts new file mode 100644 index 0000000000..071c80db85 --- /dev/null +++ b/canon-docs/src/components/IconLibrary/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export { IconLibrary } from './IconLibrary'; diff --git a/canon-docs/src/components/IconLibrary/styles.module.css b/canon-docs/src/components/IconLibrary/styles.module.css new file mode 100644 index 0000000000..40b177ced0 --- /dev/null +++ b/canon-docs/src/components/IconLibrary/styles.module.css @@ -0,0 +1,28 @@ +.library { + display: grid; + grid-template-columns: repeat(6, 1fr); + gap: 1rem; +} + +.item { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; +} + +.icon { + display: flex; + width: 100%; + justify-content: center; + align-items: center; + height: 80px; + border: 1px solid #d3d3d3; + border-radius: 0.5rem; + background-color: var(--canon-background); + transition: background-color 0.2s ease-in-out; + + &:hover { + background-color: var(--canon-surface-1); + } +} diff --git a/canon-docs/src/components/LayoutComponents/LayoutComponents.module.css b/canon-docs/src/components/LayoutComponents/LayoutComponents.module.css new file mode 100644 index 0000000000..0e42bc6fb6 --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/LayoutComponents.module.css @@ -0,0 +1,58 @@ +/* + * Copyright 2024 The Backstage 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. + */ + +.layoutComponents { + display: flex; + justify-content: flex-start; + gap: 1rem; + flex-wrap: wrap; + + & .box { + display: flex; + flex-direction: column; + width: calc(33.33% - 0.67rem); + margin-bottom: 1rem; + align-items: flex-start; + } + + & .content { + flex: none; + background-color: #fff; + border-radius: 4px; + width: 100%; + height: 180px; + transition: all 0.2s ease-in-out; + margin-bottom: 0.75rem; + display: flex; + align-items: center; + justify-content: center; + + &:hover { + transform: translateY(-4px); + } + } + + & .title { + font-size: 16px; + transition: color 0.2s ease-in-out; + margin-bottom: 0.25rem; + } + + & .description { + font-size: 16px; + color: #9e9e9e; + } +} diff --git a/canon-docs/src/components/LayoutComponents/LayoutComponents.tsx b/canon-docs/src/components/LayoutComponents/LayoutComponents.tsx new file mode 100644 index 0000000000..7262b837b3 --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/LayoutComponents.tsx @@ -0,0 +1,60 @@ +import React from 'react'; +import { BoxSvg } from './svgs/box'; +import { StackSvg } from './svgs/stack'; +import { GridSvg } from './svgs/grid'; +import { InlineSvg } from './svgs/inline'; +import { ContainerSvg } from './svgs/container'; +import styles from './LayoutComponents.module.css'; +import Link from 'next/link'; + +export const LayoutComponents = () => { + return ( +
+
+ + + +
Box
+
+ The most basic layout component +
+
+
+ + + +
Stack
+
+ Arrange your components vertically +
+
+
+ + + +
Grid
+
+ Arrange your components in a grid +
+
+
+ + + +
Inline
+
+ Arrange your components in a row +
+
+
+ + + +
Container
+
+ A container for your components +
+
+
+ ); +}; diff --git a/canon-docs/src/components/LayoutComponents/index.ts b/canon-docs/src/components/LayoutComponents/index.ts new file mode 100644 index 0000000000..55cc9f25ef --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export { LayoutComponents } from './LayoutComponents'; diff --git a/canon-docs/src/components/LayoutComponents/svgs/box.tsx b/canon-docs/src/components/LayoutComponents/svgs/box.tsx new file mode 100644 index 0000000000..5b90f971c3 --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/svgs/box.tsx @@ -0,0 +1,54 @@ +/* + * Copyright 2024 The Backstage 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. + */ +import React from 'react'; + +export const BoxSvg = () => { + return ( + + + + + + + + ); +}; diff --git a/canon-docs/src/components/LayoutComponents/svgs/container.tsx b/canon-docs/src/components/LayoutComponents/svgs/container.tsx new file mode 100644 index 0000000000..5a8fe77af3 --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/svgs/container.tsx @@ -0,0 +1,372 @@ +/* + * Copyright 2024 The Backstage 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. + */ +import React from 'react'; + +export const ContainerSvg = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/canon-docs/src/components/LayoutComponents/svgs/grid.tsx b/canon-docs/src/components/LayoutComponents/svgs/grid.tsx new file mode 100644 index 0000000000..ef071c9c91 --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/svgs/grid.tsx @@ -0,0 +1,91 @@ +/* + * Copyright 2024 The Backstage 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. + */ +import React from 'react'; + +export const GridSvg = () => { + return ( + + + + + + + + + + + + ); +}; diff --git a/canon-docs/src/components/LayoutComponents/svgs/inline.tsx b/canon-docs/src/components/LayoutComponents/svgs/inline.tsx new file mode 100644 index 0000000000..ecbff566db --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/svgs/inline.tsx @@ -0,0 +1,92 @@ +/* + * Copyright 2024 The Backstage 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. + */ +import React from 'react'; + +export const InlineSvg = () => { + return ( + + + + + + + + + + + + ); +}; diff --git a/canon-docs/src/components/LayoutComponents/svgs/stack.tsx b/canon-docs/src/components/LayoutComponents/svgs/stack.tsx new file mode 100644 index 0000000000..c54cba57cf --- /dev/null +++ b/canon-docs/src/components/LayoutComponents/svgs/stack.tsx @@ -0,0 +1,82 @@ +/* + * Copyright 2024 The Backstage 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. + */ +import React from 'react'; + +export const StackSvg = () => { + return ( + + + + + + + + + + + + ); +}; diff --git a/canon-docs/src/components/PropsTable/PropsTable.tsx b/canon-docs/src/components/PropsTable/PropsTable.tsx new file mode 100644 index 0000000000..6eb1f8cd88 --- /dev/null +++ b/canon-docs/src/components/PropsTable/PropsTable.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import * as Table from '../Table'; +import { Chip } from '../Chip'; + +// Define a more specific type for the data object +type PropData = { + type: string | string[]; + responsive: boolean; +}; + +// Modify the PropsTable component to use the new type +export const PropsTable = >({ + data, +}: { + data: T; +}) => { + return ( + + + + Prop + Type + Responsive + + + + {Object.keys(data).map(n => ( + + + {n} + + + {Array.isArray(data[n].type) ? ( + data[n].type.map(t => {t}) + ) : ( + {data[n].type} + )} + + + {data[n].responsive ? 'Yes' : 'No'} + + + ))} + + + ); +}; diff --git a/canon-docs/src/components/PropsTable/index.ts b/canon-docs/src/components/PropsTable/index.ts new file mode 100644 index 0000000000..06d884c13d --- /dev/null +++ b/canon-docs/src/components/PropsTable/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export { PropsTable } from './PropsTable'; diff --git a/canon-docs/src/components/Roadmap/Roadmap.tsx b/canon-docs/src/components/Roadmap/Roadmap.tsx new file mode 100644 index 0000000000..2177ea558f --- /dev/null +++ b/canon-docs/src/components/Roadmap/Roadmap.tsx @@ -0,0 +1,53 @@ +/* + * Copyright 2024 The Backstage 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. + */ +import React from 'react'; +import { RoadmapItem } from './list'; + +export const Roadmap = ({ list }: { list: RoadmapItem[] }) => { + const orderList = ['inProgress', 'notStarted', 'completed']; + return ( +
+ {list + .sort( + (a, b) => orderList.indexOf(a.status) - orderList.indexOf(b.status), + ) + .map(Item)} +
+ ); +}; + +const Item = ({ + title, + status = 'notStarted', +}: { + title: string; + status: 'notStarted' | 'inProgress' | 'inReview' | 'completed'; +}) => { + return ( +
+
+
+
{title}
+
+ + {status === 'notStarted' && 'Not Started'} + {status === 'inProgress' && 'In Progress'} + {status === 'inReview' && 'Ready for Review'} + {status === 'completed' && 'Completed'} + +
+ ); +}; diff --git a/canon-docs/src/components/Roadmap/index.ts b/canon-docs/src/components/Roadmap/index.ts new file mode 100644 index 0000000000..ac51dfa1ed --- /dev/null +++ b/canon-docs/src/components/Roadmap/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export { Roadmap } from './Roadmap'; diff --git a/canon-docs/src/components/Roadmap/list.ts b/canon-docs/src/components/Roadmap/list.ts new file mode 100644 index 0000000000..d5f436281a --- /dev/null +++ b/canon-docs/src/components/Roadmap/list.ts @@ -0,0 +1,62 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export type RoadmapItem = { + title: string; + status: 'notStarted' | 'inProgress' | 'inReview' | 'completed'; +}; + +export const list: RoadmapItem[] = [ + { + title: 'Remove Vanilla Extract and use pure CSS instead', + status: 'inProgress', + }, + { + title: 'Add collapsing across breakpoints for the Inline component', + status: 'notStarted', + }, + { + title: 'Add reversing the order for the Inline component', + status: 'notStarted', + }, + { + title: 'Set up Storybook', + status: 'completed', + }, + { + title: 'Set up iconography', + status: 'completed', + }, + { + title: 'Set up global tokens', + status: 'inProgress', + }, + { + title: 'Set up theming system', + status: 'inProgress', + }, + { + title: 'Create first pass at box component', + status: 'completed', + }, + { + title: 'Create first pass at stack component', + status: 'completed', + }, + { + title: 'Create first pass at inline component', + status: 'completed', + }, +]; diff --git a/canon-docs/src/components/Roadmap/styles.css b/canon-docs/src/components/Roadmap/styles.css new file mode 100644 index 0000000000..63f32312e7 --- /dev/null +++ b/canon-docs/src/components/Roadmap/styles.css @@ -0,0 +1,100 @@ +.roadmap { + display: flex; + flex-direction: column; +} + +.roadmap .roadmap-item { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #e0e0e0; + padding: 8px 0px; +} + +.roadmap .roadmap-item .left { + display: flex; + align-items: center; + padding-left: 12px; + gap: 12px; +} + +.roadmap .roadmap-item .dot { + width: 8px; + height: 8px; + border-radius: 50%; + background-color: #e0e0e0; +} + +.roadmap .roadmap-item.notStarted { + color: #000; +} + +.roadmap .roadmap-item.inProgress { + color: #000; +} + +.roadmap .roadmap-item.inReview { + color: #000; +} + +.roadmap .roadmap-item.completed .title { + color: #a2a2a2; + text-decoration: line-through; +} + +.roadmap .roadmap-item.notStarted .dot { + background-color: #d1d1d1; +} + +.roadmap .roadmap-item.inProgress .dot { + background-color: #ffd000; +} + +.roadmap .roadmap-item.inReview .dot { + background-color: #4ed14a; +} + +.roadmap .roadmap-item.completed .dot { + background-color: #4ed14a; +} + +.roadmap .roadmap-item .title { + font-size: 16px; +} + +.roadmap .roadmap-item .pill { + display: inline-flex; + align-items: center; + height: 24px; + padding: 0px 8px; + border-radius: 40px; + font-size: 12px; + font-weight: 600; + margin-left: 8px; + border-style: solid; + border-width: 1px; +} + +.roadmap .roadmap-item.notStarted .pill { + background-color: #f2f2f2; + border-color: #cdcdcd; + color: #888888; +} + +.roadmap .roadmap-item.inProgress .pill { + background-color: #fff2b9; + border-color: #ffd000; + color: #d79927; +} + +.roadmap .roadmap-item.inReview .pill { + background-color: #d7f9d7; + border-color: #4ed14a; + color: #3a9837; +} + +.roadmap .roadmap-item.completed .pill { + background-color: #d7f9d7; + border-color: #4ed14a; + color: #3a9837; +} diff --git a/canon-docs/src/components/Sidebar/Sidebar.module.css b/canon-docs/src/components/Sidebar/Sidebar.module.css new file mode 100644 index 0000000000..809f1b560b --- /dev/null +++ b/canon-docs/src/components/Sidebar/Sidebar.module.css @@ -0,0 +1,67 @@ +.sidebar { + position: fixed; + top: 0; + left: 0; + width: 300px; + height: 100vh; + color: var(--canon-text-primary); + background-color: var(--canon-surface-1); + border-right: 1px solid var(--canon-border-base); + padding-left: 20px; + padding-right: 20px; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + overflow: hidden; +} + +.logo path { + fill: var(--canon-text-primary); +} + +.content { + padding-top: 20px; +} + +.actions { + display: flex; + flex-direction: row; + gap: 12px; + margin-top: 20px; + margin-bottom: 12px; +} + +.menu { + display: flex; + flex-direction: row; + position: relative; +} + +.menu a { + display: flex; + text-decoration: none; + height: 28px; + align-items: center; +} + +.section { + width: 100%; +} + +.line { + width: 100%; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + height: 28px; + padding: 0 12px; + border-radius: 4px; + transition: background-color 0.2s ease-in-out; + + &:hover { + background-color: var(--canon-surface-2); + } +} + +.line.active { + background-color: var(--canon-surface-2); +} diff --git a/canon-docs/src/components/Sidebar/Tabs.module.css b/canon-docs/src/components/Sidebar/Tabs.module.css new file mode 100644 index 0000000000..e74b47853a --- /dev/null +++ b/canon-docs/src/components/Sidebar/Tabs.module.css @@ -0,0 +1,87 @@ +.tabs { + border-radius: 0.375rem; + width: 100%; + background-color: var(--canon-surface-2); + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; +} + +.tabsTheme { + width: 142px; + border-radius: 0.375rem; + background-color: var(--canon-surface-2); + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; +} + +.list { + display: flex; + position: relative; + z-index: 0; + padding-inline: 0.25rem; + gap: 0.25rem; +} + +.tab { + display: flex; + align-items: center; + justify-content: center; + border: 0; + margin: 0; + outline: 0; + background: none; + appearance: none; + color: var(--canon-text-secondary) !important; + font-family: inherit; + font-size: 0.75rem; + line-height: 1.25rem; + font-weight: 500; + user-select: none; + height: 2.25rem; + flex: 1; + cursor: pointer; + + &[data-selected] { + color: var(--canon-text-primary) !important; + + & p { + color: var(--canon-text-primary) !important; + } + } + + @media (hover: hover) { + &:hover { + color: var(--canon-text-primary); + } + } + + &:focus-visible { + position: relative; + + &::before { + content: ''; + position: absolute; + inset: 0.25rem 0; + border-radius: 0.25rem; + outline: 2px solid var(--canon-surface-1); + outline-offset: -1px; + } + } +} + +.tab p { + color: var(--canon-text-secondary) !important; +} + +.indicator { + position: absolute; + z-index: -1; + left: 0; + top: 50%; + translate: var(--active-tab-left) -50%; + width: var(--active-tab-width); + height: 1.8rem; + border-radius: 0.25rem; + background-color: var(--canon-surface-1); + transition-property: translate, width, background-color; + transition-duration: 200ms; + transition-timing-function: ease-in-out; +} diff --git a/canon-docs/src/components/Sidebar/docs.tsx b/canon-docs/src/components/Sidebar/docs.tsx new file mode 100644 index 0000000000..0d83b9bb0f --- /dev/null +++ b/canon-docs/src/components/Sidebar/docs.tsx @@ -0,0 +1,90 @@ +'use client'; + +import Link from 'next/link'; +import { components, overview, layoutComponents, theme } from '@/utils/data'; +import { Box } from '../../../../packages/canon/src/components/Box'; +import { Text } from '../../../../packages/canon/src/components/Text'; +import { motion } from 'framer-motion'; +import styles from './Sidebar.module.css'; +import { usePathname } from 'next/navigation'; +import { Fragment } from 'react'; + +const data = [ + { + title: 'Overview', + content: overview, + url: '', + }, + { + title: 'Theme', + content: theme, + url: '/theme', + }, + { + title: 'Layout Components', + content: layoutComponents, + url: '/components', + }, + { + title: 'Components', + content: components, + url: '/components', + }, +]; + +export const Docs = () => { + const pathname = usePathname(); + const isPlayground = pathname.includes('/playground'); + + return ( + + {data.map(section => { + return ( + + + + {section.title} + + + {section.content.map(item => { + const isActive = pathname === `${section.url}/${item.slug}`; + + return ( + + {item.title} + + {item.status === 'alpha' && 'Alpha'} + {item.status === 'beta' && 'Beta'} + {item.status === 'inProgress' && 'In Progress'} + {item.status === 'stable' && 'Stable'} + {item.status === 'deprecated' && 'Deprecated'} + + + ); + })} + + ); + })} + + ); +}; diff --git a/canon-docs/src/components/Sidebar/index.tsx b/canon-docs/src/components/Sidebar/index.tsx new file mode 100644 index 0000000000..ecbf157d6c --- /dev/null +++ b/canon-docs/src/components/Sidebar/index.tsx @@ -0,0 +1,35 @@ +import styles from './Sidebar.module.css'; +import { TabsVersion, TabsPages, TabsTheme } from './tabs'; +import { Docs } from './docs'; +import { Playground } from './playground'; +import Link from 'next/link'; + +export const Sidebar = () => { + return ( +
+
+ + + + + + +
+ + +
+ +
+ + +
+
+
+ ); +}; diff --git a/canon-docs/src/components/Sidebar/playground.tsx b/canon-docs/src/components/Sidebar/playground.tsx new file mode 100644 index 0000000000..59502f6314 --- /dev/null +++ b/canon-docs/src/components/Sidebar/playground.tsx @@ -0,0 +1,87 @@ +'use client'; + +import { components } from '@/utils/data'; +import { Box } from '../../../../packages/canon/src/components/Box'; +import { Checkbox } from '../../../../packages/canon/src/components/Checkbox'; +import { Text } from '../../../../packages/canon/src/components/Text'; +import { motion } from 'framer-motion'; +import styles from './Sidebar.module.css'; +import { usePathname } from 'next/navigation'; +import { screenSizes } from '@/utils/data'; +import { usePlayground } from '@/utils/playground-context'; + +export const Playground = () => { + const pathname = usePathname(); + const isPlayground = pathname.includes('/playground'); + const { + selectedScreenSizes, + setSelectedScreenSizes, + selectedComponents, + setSelectedComponents, + } = usePlayground(); + + const handleComponentCheckboxChange = (slug: string) => { + if (selectedComponents.find(item => item === slug)) { + const res = selectedComponents.filter(item => item !== slug); + setSelectedComponents(res); + } else { + setSelectedComponents([...selectedComponents, slug]); + } + }; + + const handleCheckboxChange = (slug: string) => { + if (selectedScreenSizes.find(item => item === slug)) { + const res = selectedScreenSizes.filter(item => item !== slug); + setSelectedScreenSizes(res); + } else { + setSelectedScreenSizes([...selectedScreenSizes, slug]); + } + }; + + return ( + + + + Components + + + {components.map(({ slug, title }) => ( +
+ {title} + handleComponentCheckboxChange(slug)} + /> +
+ ))} + + + Screen sizes + + + {screenSizes.map(({ slug, title }) => ( +
+ {title} + handleCheckboxChange(slug)} + /> +
+ ))} +
+ ); +}; diff --git a/canon-docs/src/components/Sidebar/tabs.tsx b/canon-docs/src/components/Sidebar/tabs.tsx new file mode 100644 index 0000000000..e43f9a0422 --- /dev/null +++ b/canon-docs/src/components/Sidebar/tabs.tsx @@ -0,0 +1,103 @@ +'use client'; + +import styles from './Tabs.module.css'; +import { Tabs } from '@base-ui-components/react/tabs'; +import { Icon } from '../../../../packages/canon/src/components/Icon'; +import { Text } from '../../../../packages/canon/src/components/Text'; +import { usePathname } from 'next/navigation'; +import { useRouter } from 'next/navigation'; +import { usePlayground } from '@/utils/playground-context'; + +export const TabsVersion = () => { + const { selectedThemeName, setSelectedThemeName } = usePlayground(); + return ( + + + + + Theme 1 + + + + + Theme 2 + + + + + + ); +}; + +export const TabsTheme = () => { + const { selectedTheme, setSelectedTheme } = usePlayground(); + + return ( + + + + + + + + + + + + ); +}; + +export const TabsPages = () => { + const pathname = usePathname(); + const router = useRouter(); + + const onValueChange = (value: string) => { + if (value === 'docs') { + router.push('/'); + } else { + router.push('/playground'); + } + }; + + return ( + + + { + router.push('/'); + }} + > + + Documentation + + + { + router.push('/playground'); + }} + > + + Playground + + + + + + ); +}; diff --git a/canon-docs/src/components/Snippet/index.tsx b/canon-docs/src/components/Snippet/index.tsx new file mode 100644 index 0000000000..2c7c4c5a02 --- /dev/null +++ b/canon-docs/src/components/Snippet/index.tsx @@ -0,0 +1,42 @@ +import { ReactNode } from 'react'; +import { CodeBlock } from '../CodeBlock'; +import { Text } from '../../../../packages/canon/src/components/Text'; +import { Collapsible } from '@base-ui-components/react/collapsible'; +import styles from './styles.module.css'; + +interface SnippetProps { + preview: ReactNode; + code: string; + align?: 'left' | 'center'; + px?: number; + py?: number; + open?: boolean; +} + +export const Snippet = ({ + preview, + code = '', + align = 'left', + px = 2, + py = 2, + open = false, +}: SnippetProps) => { + return ( + +
+
+ {preview} +
+ + View code + +
+ + + +
+ ); +}; diff --git a/canon-docs/src/components/Snippet/styles.module.css b/canon-docs/src/components/Snippet/styles.module.css new file mode 100644 index 0000000000..c56627b1e1 --- /dev/null +++ b/canon-docs/src/components/Snippet/styles.module.css @@ -0,0 +1,62 @@ +.container { + display: flex; + flex-direction: column; + gap: 8px; +} + +.preview { + border-radius: 4px; + box-shadow: inset 0 0 0 1px var(--canon-border-base); + background-color: var(--canon-background); + transition: all 0.2s ease-in-out; + padding: 1px; + position: relative; +} + +.previewContent { + width: 100%; + height: 100%; + background-image: radial-gradient(rgba(0, 0, 0, 0.08) 1px, transparent 0); + background-position: calc((8px / 2) * -1) calc((8px / 2) * -1); + background-size: 8px 8px; +} + +.center { + display: flex; + justify-content: center; + align-items: center; +} + +.trigger { + all: unset; + position: absolute; + right: 16px; + bottom: 12px; + cursor: pointer; +} + +[data-theme='dark'] .previewContent { + background-image: radial-gradient( + rgba(255, 255, 255, 0.1) 1px, + transparent 0 + ); +} + +.panel { + height: var(--collapsible-panel-height); + transition: all 0.2s ease-out; + overflow: hidden; + + &[data-starting-style], + &[data-ending-style] { + height: 0; + } + + &[data-closed] { + opacity: 0; + } + + &[data-open] { + opacity: 1; + } +} diff --git a/canon-docs/src/components/Table/Table.tsx b/canon-docs/src/components/Table/Table.tsx new file mode 100644 index 0000000000..19ae69822e --- /dev/null +++ b/canon-docs/src/components/Table/Table.tsx @@ -0,0 +1,54 @@ +/* + * Copyright 2024 The Backstage 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. + */ + +import React from 'react'; +import styles from './styles.module.css'; + +export const Root = ({ children }: { children: React.ReactNode }) => { + return ( +
+ {children}
+
+ ); +}; + +export const Header = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const Body = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const HeaderRow = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const HeaderCell = ({ children }: { children: React.ReactNode }) => { + return ( + + {children} + + ); +}; + +export const Row = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; + +export const Cell = ({ children }: { children: React.ReactNode }) => { + return {children}; +}; diff --git a/canon-docs/src/components/Table/index.ts b/canon-docs/src/components/Table/index.ts new file mode 100644 index 0000000000..7419aa83a8 --- /dev/null +++ b/canon-docs/src/components/Table/index.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2024 The Backstage 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. + */ +export { Root, Header, Body, Row, Cell, HeaderRow, HeaderCell } from './Table'; diff --git a/canon-docs/src/components/Table/styles.module.css b/canon-docs/src/components/Table/styles.module.css new file mode 100644 index 0000000000..df90566eee --- /dev/null +++ b/canon-docs/src/components/Table/styles.module.css @@ -0,0 +1,73 @@ +/* + * Copyright 2024 The Backstage 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. + */ + +.wrapper { + border: 1px solid var(--canon-border-base); + border-radius: 4px; + overflow: hidden; + margin-bottom: 1rem; +} + +.table { + width: 100%; + margin: 0 !important; + padding: 0 !important; + border-spacing: 0px; + border-collapse: collapse; +} + +.tableCell { + padding: 12px 16px !important; + border: none !important; + text-align: left; + background-color: var(--canon-surface-1) !important; + font-size: 16px; + transition: background-color 0.2s ease-in-out; + + & p { + margin: 0; + } +} + +.tableHeaderCell { + border-bottom: 1px solid var(--canon-border-base) !important; + font-weight: 500; + font-size: 14px; +} + +.tableRow { + border: none; + border-bottom: 1px solid var(--canon-border-base); + &:last-child { + border-bottom: none; + } +} + +.tableChip { + display: inline-block; + font-size: 14px !important; + border: 1px solid var(--canon-border-base); + border-radius: 6px; + padding: 0px 6px; + height: 24px; +} + +.tableType { + display: flex; + flex-wrap: wrap; + flex-direction: row; + gap: 8px; +} diff --git a/canon-docs/src/components/Tabs/index.tsx b/canon-docs/src/components/Tabs/index.tsx new file mode 100644 index 0000000000..06aef76e7f --- /dev/null +++ b/canon-docs/src/components/Tabs/index.tsx @@ -0,0 +1 @@ +export * as Tabs from './parts'; diff --git a/canon-docs/src/components/Tabs/parts.tsx b/canon-docs/src/components/Tabs/parts.tsx new file mode 100644 index 0000000000..e0ae296136 --- /dev/null +++ b/canon-docs/src/components/Tabs/parts.tsx @@ -0,0 +1,54 @@ +'use client'; + +import { Tabs as TabsPrimitive } from '@base-ui-components/react/tabs'; +import styles from './styles.module.css'; +import { Text } from '../../../../packages/canon/src/components/Text'; + +export const Root = ({ + className, + ...rest +}: React.ComponentProps) => ( + +); + +export const List = ({ + className, + children, + ...rest +}: React.ComponentProps) => ( + + {children} + + +); + +export const Tab = (props: React.ComponentProps) => ( + { + return ( + + ); + }} + /> +); + +export const Panel = ({ + className, + ...rest +}: React.ComponentProps) => ( + +); diff --git a/canon-docs/src/components/Tabs/styles.module.css b/canon-docs/src/components/Tabs/styles.module.css new file mode 100644 index 0000000000..ba5db73b59 --- /dev/null +++ b/canon-docs/src/components/Tabs/styles.module.css @@ -0,0 +1,27 @@ +.root { + margin-top: 40px; +} + +.list { + display: flex; + gap: var(--canon-spacing-md); + border-bottom: 1px solid var(--canon-border-base); + position: relative; + margin-bottom: var(--canon-spacing-md); +} + +.tab { + all: unset; + cursor: pointer; + padding-bottom: 8px; +} + +.indicator { + position: absolute; + bottom: -1px; + left: var(--active-tab-left); + width: var(--active-tab-width); + height: 1px; + background-color: var(--canon-text-primary); + transition: all 0.2s ease-in-out; +} diff --git a/canon-docs/src/mdx-components.tsx b/canon-docs/src/mdx-components.tsx new file mode 100644 index 0000000000..84239d2995 --- /dev/null +++ b/canon-docs/src/mdx-components.tsx @@ -0,0 +1,54 @@ +import type { MDXComponents } from 'mdx/types'; +import Image, { ImageProps } from 'next/image'; +import { ReactNode } from 'react'; +import React from 'react'; +import { CodeBlock } from '@/components/CodeBlock'; +import { Heading } from '../../packages/canon/src/components/Heading'; +import { Text } from '../../packages/canon/src/components/Text'; +import { Box } from '../../packages/canon/src/components/Box'; + +export function useMDXComponents(components: MDXComponents): MDXComponents { + return { + // Allows customizing built-in components, e.g. to add styling. + h1: ({ children }) => ( + + {children as ReactNode} + + ), + h2: ({ children }) => ( + + {children as ReactNode} + + ), + h3: ({ children }) => ( + + {children as ReactNode} + + ), + p: ({ children }) => ( + + {children as ReactNode} + + ), + a: ({ children, href }) => ( + + {children as ReactNode} + + ), + pre: ({ children }) => { + const codeContent = React.isValidElement(children) + ? (children.props as { children: string }).children + : ''; + + return ; + }, + img: props => ( + + ), + ...components, + }; +} diff --git a/canon-docs/src/snippets/_snippets.ts b/canon-docs/src/snippets/_snippets.ts new file mode 100644 index 0000000000..417ff853b5 --- /dev/null +++ b/canon-docs/src/snippets/_snippets.ts @@ -0,0 +1,45 @@ +// Sometimes codes are not formatted correctly in the docs, so we need to use snippets + +export const grid = `import { Grid } from '@backstage/canon'; + + + + +`; + +export const buttonVariants = ` + + + + +`; + +export const stackFAQ1 = ` + Hello World + Hello World + Hello World +`; + +export const stackSimple = ` + Hello World + Hello World + Hello World +`; + +export const stackResponsive = ` + Hello World + Hello World + Hello World +`; + +export const stackAlign = ` + Hello World + Hello World + Hello World +`; diff --git a/canon-docs/src/snippets/box.tsx b/canon-docs/src/snippets/box.tsx new file mode 100644 index 0000000000..2a99ebee7d --- /dev/null +++ b/canon-docs/src/snippets/box.tsx @@ -0,0 +1,20 @@ +'use client'; + +import { Box } from '../../../packages/canon'; + +export const BoxPreview = () => { + return ( + + ); +}; diff --git a/canon-docs/src/snippets/button.tsx b/canon-docs/src/snippets/button.tsx new file mode 100644 index 0000000000..59e6bbd486 --- /dev/null +++ b/canon-docs/src/snippets/button.tsx @@ -0,0 +1,108 @@ +'use client'; + +import { + Inline, + Button, + Stack, + ButtonProps, + Text, +} from '../../../packages/canon'; + +export const ButtonPreview = () => { + return ( + + + + + + ); +}; + +export const ButtonSizes = () => { + return ( + + + + + ); +}; + +export const ButtonWithIcons = () => { + return ( + + + + + + ); +}; + +export const ButtonFullWidth = () => { + return ( + + + + + + ); +}; + +export const ButtonDisabled = () => { + return ; +}; + +export const ButtonResponsive = () => { + // TODO: Add responsive button + return null; +}; + +export const ButtonPlayground = () => { + const variants: string[] = ['primary', 'secondary', 'tertiary']; + + return ( + + {variants.map(variant => ( + + {variant} + {['small', 'medium'].map(size => ( + + + + + + ))} + + ))} + + ); +}; diff --git a/canon-docs/src/snippets/checkbox.tsx b/canon-docs/src/snippets/checkbox.tsx new file mode 100644 index 0000000000..88c6de4a99 --- /dev/null +++ b/canon-docs/src/snippets/checkbox.tsx @@ -0,0 +1,32 @@ +'use client'; + +import { Inline, Checkbox, Stack, Text } from '../../../packages/canon'; + +export const CheckboxPreview = () => { + return ; +}; + +export const CheckboxAllVariants = () => { + return ( + + + + + + + ); +}; + +export const CheckboxPlayground = () => { + return ( + + All variants + + + + + + + + ); +}; diff --git a/canon-docs/src/snippets/container.tsx b/canon-docs/src/snippets/container.tsx new file mode 100644 index 0000000000..40ffc69c8c --- /dev/null +++ b/canon-docs/src/snippets/container.tsx @@ -0,0 +1,25 @@ +'use client'; + +import { Box, Container } from '../../../packages/canon'; + +const DecorativeBox = () => ( + +); + +export const ContainerPreview = () => { + return ( + + + + ); +}; diff --git a/canon-docs/src/snippets/grid.tsx b/canon-docs/src/snippets/grid.tsx new file mode 100644 index 0000000000..161747cbf6 --- /dev/null +++ b/canon-docs/src/snippets/grid.tsx @@ -0,0 +1,27 @@ +'use client'; + +import { Box, Grid } from '../../../packages/canon'; + +const FakeBox = () => ( + +); + +export const GridPreview = () => { + return ( + + + + + + ); +}; diff --git a/canon-docs/src/snippets/heading.tsx b/canon-docs/src/snippets/heading.tsx new file mode 100644 index 0000000000..087ce7ebbd --- /dev/null +++ b/canon-docs/src/snippets/heading.tsx @@ -0,0 +1,43 @@ +'use client'; + +import { Heading, Stack, Text } from '../../../packages/canon'; + +export const HeadingPreview = () => { + return Look mum, no hands!; +}; + +export const HeadingAllVariants = () => { + return ( + + Display + Title 1 + Title 2 + Title 3 + Title 4 + + ); +}; + +export const HeadingResponsive = () => { + return null; + return ( + + + Responsive heading + + + ); +}; + +export const HeadingPlayground = () => { + return ( + + All variants + Display + Title 1 + Title 2 + Title 3 + Title 4 + + ); +}; diff --git a/canon-docs/src/snippets/icon.tsx b/canon-docs/src/snippets/icon.tsx new file mode 100644 index 0000000000..126dbaf686 --- /dev/null +++ b/canon-docs/src/snippets/icon.tsx @@ -0,0 +1,7 @@ +'use client'; + +import { Icon } from '../../../packages/canon'; + +export const IconPreview = () => { + return ; +}; diff --git a/canon-docs/src/snippets/inline.tsx b/canon-docs/src/snippets/inline.tsx new file mode 100644 index 0000000000..73b619e3af --- /dev/null +++ b/canon-docs/src/snippets/inline.tsx @@ -0,0 +1,48 @@ +'use client'; + +import { Box, Inline } from '../../../packages/canon'; + +const fakeBlockList = [ + { width: 45, height: 60 }, + { width: 150, height: 75 }, + { width: 80, height: 50 }, + { width: 120, height: 70 }, + { width: 95, height: 65 }, + { width: 80, height: 32 }, + { width: 130, height: 60 }, + { width: 100, height: 80 }, + { width: 140, height: 45 }, + { width: 85, height: 70 }, + { width: 125, height: 50 }, +]; + +const FakeBox = ({ + width = 120, + height = 80, +}: { + width?: number; + height?: number; +}) => ( + +); + +export const InlinePreview = () => { + return ( + + {fakeBlockList.map((block, index) => ( + + ))} + + ); +}; diff --git a/canon-docs/src/snippets/stack.tsx b/canon-docs/src/snippets/stack.tsx new file mode 100644 index 0000000000..4bada6f7ba --- /dev/null +++ b/canon-docs/src/snippets/stack.tsx @@ -0,0 +1,31 @@ +'use client'; + +import { Stack } from '../../../packages/canon'; + +const DecorativeBox = () => { + return ( +
+ ); +}; + +export const StackPreview = () => { + return ( +
+ + + + + +
+ ); +}; diff --git a/canon-docs/src/snippets/text.tsx b/canon-docs/src/snippets/text.tsx new file mode 100644 index 0000000000..633b3b45d7 --- /dev/null +++ b/canon-docs/src/snippets/text.tsx @@ -0,0 +1,93 @@ +'use client'; + +import { Stack, Text } from '../../../packages/canon'; + +export const TextPreview = () => { + return ( + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is in + the painting? + + ); +}; + +export const TextAllVariants = () => { + return ( + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + ); +}; + +export const TextAllWeights = () => { + return ( + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + ); +}; + +export const TextResponsive = () => { + // TODO: Add responsive text + return null; +}; + +export const TextPlayground = () => { + return ( + + Subtitle + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + Body + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + Caption + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + Label + + A man looks at a painting in a museum and says, “Brothers and sisters I + have none, but that man's father is my father's son.” Who is + in the painting? + + + ); +}; diff --git a/canon-docs/src/utils/data.ts b/canon-docs/src/utils/data.ts new file mode 100644 index 0000000000..f99ef2dbe8 --- /dev/null +++ b/canon-docs/src/utils/data.ts @@ -0,0 +1,113 @@ +interface Page { + title: string; + slug: string; + status?: 'alpha' | 'beta' | 'stable' | 'deprecated' | 'inProgress'; +} + +export const overview: Page[] = [ + { + title: 'Getting Started', + slug: '', + }, + { + title: 'About', + slug: 'about', + }, +]; + +export const theme: Page[] = [ + { + title: 'Iconography', + slug: 'iconography', + }, + { + title: 'Layout', + slug: 'layout', + }, + { + title: 'Responsive', + slug: 'responsive', + }, + { + title: 'Theming', + slug: 'theming', + }, + { + title: 'Typography', + slug: 'typography', + }, +]; + +export const layoutComponents: Page[] = [ + { + title: 'Box', + slug: 'box', + status: 'alpha', + }, + { + title: 'Container', + slug: 'container', + status: 'alpha', + }, + { + title: 'Grid', + slug: 'grid', + status: 'alpha', + }, + { + title: 'Inline', + slug: 'inline', + status: 'alpha', + }, + { + title: 'Stack', + slug: 'stack', + status: 'alpha', + }, +]; + +export const components: Page[] = [ + { + title: 'Button', + slug: 'button', + status: 'inProgress', + }, + { + title: 'Checkbox', + slug: 'checkbox', + status: 'inProgress', + }, + { + title: 'Heading', + slug: 'heading', + status: 'alpha', + }, + { + title: 'Icon', + slug: 'icon', + status: 'alpha', + }, + { + title: 'Table', + slug: 'table', + status: 'inProgress', + }, + { + title: 'Text', + slug: 'text', + status: 'alpha', + }, +]; + +export type ScreenSize = { + title: string; + slug: string; + width: number; +}; + +export const screenSizes: ScreenSize[] = [ + { title: 'Mobile', slug: 'mobile', width: 390 }, + { title: 'Tablet', slug: 'tablet', width: 768 }, + { title: 'Desktop', slug: 'desktop', width: 1280 }, + { title: 'Wide', slug: 'wide', width: 1600 }, +]; diff --git a/canon-docs/src/utils/playground-context.tsx b/canon-docs/src/utils/playground-context.tsx new file mode 100644 index 0000000000..198c5a9aab --- /dev/null +++ b/canon-docs/src/utils/playground-context.tsx @@ -0,0 +1,90 @@ +import React, { + createContext, + useContext, + ReactNode, + useState, + useEffect, +} from 'react'; +import { components } from './data'; + +// Create a context with an empty array as the default value +const PlaygroundContext = createContext<{ + selectedScreenSizes: string[]; + setSelectedScreenSizes: (screenSizes: string[]) => void; + selectedComponents: string[]; + setSelectedComponents: (components: string[]) => void; + selectedTheme: string | null; + setSelectedTheme: (theme: string) => void; + selectedThemeName: string; + setSelectedThemeName: (themeName: string) => void; +}>({ + selectedScreenSizes: [], + setSelectedScreenSizes: () => {}, + selectedComponents: [], + setSelectedComponents: () => {}, + selectedTheme: 'light', + setSelectedTheme: () => {}, + selectedThemeName: 'default', + setSelectedThemeName: () => {}, +}); + +// Create a provider component +export const PlaygroundProvider = ({ children }: { children: ReactNode }) => { + // Check if running in a browser environment + const isBrowser = typeof window !== 'undefined'; + + const [selectedScreenSizes, setSelectedScreenSizes] = useState([]); + const [selectedComponents, setSelectedComponents] = useState( + components.map(component => component.slug), + ); + const [selectedTheme, setSelectedTheme] = useState(() => { + return isBrowser ? localStorage.getItem('theme') : 'light'; + }); + const [selectedThemeName, setSelectedThemeName] = useState(() => { + return isBrowser + ? localStorage.getItem('theme-name') || 'default' + : 'default'; + }); + + useEffect(() => { + if (isBrowser) { + document.documentElement.setAttribute( + 'data-theme', + selectedTheme || 'light', + ); + localStorage.setItem('theme', selectedTheme || 'light'); + } + }, [selectedTheme, isBrowser]); + + useEffect(() => { + if (isBrowser) { + document.documentElement.setAttribute( + 'data-theme-name', + selectedThemeName || 'default', + ); + localStorage.setItem('theme-name', selectedThemeName || 'default'); + } + }, [selectedThemeName, isBrowser]); + + return ( + + {children} + + ); +}; + +// Create a custom hook to use the screen sizes +export const usePlayground = () => { + return useContext(PlaygroundContext); +}; diff --git a/canon-docs/src/utils/spaceProps.ts b/canon-docs/src/utils/spaceProps.ts new file mode 100644 index 0000000000..3eb6961bc1 --- /dev/null +++ b/canon-docs/src/utils/spaceProps.ts @@ -0,0 +1,41 @@ +/* + * Copyright 2024 The Backstage 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. + */ + +export const spacePropsList = [ + 'margin', + 'marginBottom', + 'marginLeft', + 'marginRight', + 'marginTop', + 'marginX', + 'marginY', + 'padding', + 'paddingBottom', + 'paddingLeft', + 'paddingRight', + 'paddingTop', + 'paddingX', + 'paddingY', +].reduce( + (acc: { [key: string]: { type: string[]; responsive: boolean } }, prop) => { + acc[prop] = { + type: ['2xs', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl', '5xl'], + responsive: true, + }; + return acc; + }, + {}, +); diff --git a/canon-docs/tsconfig.json b/canon-docs/tsconfig.json new file mode 100644 index 0000000000..2baa7cde8f --- /dev/null +++ b/canon-docs/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "dist/types/**/*.ts" + ], + "exclude": ["node_modules"] +} diff --git a/canon-docs/yarn.lock b/canon-docs/yarn.lock new file mode 100644 index 0000000000..9eb2b969f2 --- /dev/null +++ b/canon-docs/yarn.lock @@ -0,0 +1,5497 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 6 + cacheKey: 8 + +"@esbuild/aix-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/aix-ppc64@npm:0.24.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm64@npm:0.24.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm@npm:0.24.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-x64@npm:0.24.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-arm64@npm:0.24.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-x64@npm:0.24.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-arm64@npm:0.24.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-x64@npm:0.24.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm64@npm:0.24.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm@npm:0.24.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ia32@npm:0.24.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-loong64@npm:0.24.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-mips64el@npm:0.24.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ppc64@npm:0.24.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-riscv64@npm:0.24.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-s390x@npm:0.24.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-x64@npm:0.24.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-arm64@npm:0.24.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-x64@npm:0.24.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-arm64@npm:0.24.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-x64@npm:0.24.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/sunos-x64@npm:0.24.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-arm64@npm:0.24.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-ia32@npm:0.24.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-x64@npm:0.24.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" + dependencies: + eslint-visitor-keys: ^3.4.3 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: a7ffc838eb6a9ef594cda348458ccf38f34439ac77dc090fa1c120024bcd4eb911dfd74d5ef44d42063e7949fa7c5123ce714a015c4abb917d4124be1bd32bfe + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.6.0 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: 10957c7592b20ca0089262d8c2a8accbad14b4f6507e35416c32ee6b4dbf9cad67dfb77096bbd405405e9ada2b107f3797fe94362e1c55e0b09d6e90dd149127 + languageName: node + linkType: hard + +"@eslint/js@npm:8.57.1": + version: 8.57.1 + resolution: "@eslint/js@npm:8.57.1" + checksum: 2afb77454c06e8316793d2e8e79a0154854d35e6782a1217da274ca60b5044d2c69d6091155234ed0551a1e408f86f09dd4ece02752c59568fa403e60611e880 + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.13.0": + version: 0.13.0 + resolution: "@humanwhocodes/config-array@npm:0.13.0" + dependencies: + "@humanwhocodes/object-schema": ^2.0.3 + debug: ^4.3.1 + minimatch: ^3.0.5 + checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.3": + version: 2.0.3 + resolution: "@humanwhocodes/object-schema@npm:2.0.3" + checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: ^5.1.2 + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: ^7.0.1 + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: ^8.1.0 + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 4a473b9b32a7d4d3cfb7a614226e555091ff0c5a29a1734c28c72a182c2f6699b26fc6b5c2131dfd841e86b185aea714c72201d7c98c2fba5f17709333a67aeb + languageName: node + linkType: hard + +"@mdx-js/loader@npm:^3.1.0": + version: 3.1.0 + resolution: "@mdx-js/loader@npm:3.1.0" + dependencies: + "@mdx-js/mdx": ^3.0.0 + source-map: ^0.7.0 + peerDependencies: + webpack: ">=5" + peerDependenciesMeta: + webpack: + optional: true + checksum: 983b8d4949f4d214a17f4ad8597a50de36ace75e93292d2493b5fb6077d69d6abc8230b62f88b818c04f12a01d281d63edb6a0738937f7e259406a73ce998134 + languageName: node + linkType: hard + +"@mdx-js/mdx@npm:^3.0.0": + version: 3.1.0 + resolution: "@mdx-js/mdx@npm:3.1.0" + dependencies: + "@types/estree": ^1.0.0 + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdx": ^2.0.0 + collapse-white-space: ^2.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + estree-util-scope: ^1.0.0 + estree-walker: ^3.0.0 + hast-util-to-jsx-runtime: ^2.0.0 + markdown-extensions: ^2.0.0 + recma-build-jsx: ^1.0.0 + recma-jsx: ^1.0.0 + recma-stringify: ^1.0.0 + rehype-recma: ^1.0.0 + remark-mdx: ^3.0.0 + remark-parse: ^11.0.0 + remark-rehype: ^11.0.0 + source-map: ^0.7.0 + unified: ^11.0.0 + unist-util-position-from-estree: ^2.0.0 + unist-util-stringify-position: ^4.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 + checksum: 8a1aa72ddb23294ef28903fc7ad32439a8588106949d789477c2e858e6f068c7b979ae4b2296e820987f7c4d75d6781dafb6fe6a514828bb2ab2b81d89548064 + languageName: node + linkType: hard + +"@mdx-js/react@npm:^3.1.0": + version: 3.1.0 + resolution: "@mdx-js/react@npm:3.1.0" + dependencies: + "@types/mdx": ^2.0.0 + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: c5a9c495f43f498ece24a768762a1743abe2be33d050d7eab731beb754e631700547f039198c6262c998d9a443906bd78811c3fa38bc2fb37659848161dac331 + languageName: node + linkType: hard + +"@next/env@npm:14.2.23": + version: 14.2.23 + resolution: "@next/env@npm:14.2.23" + checksum: dad74ff7de68992a0753f728a5b926ed6eb0af8a62deece6bbb32ba254b1f7d870e256b61db8d4c40fa811695cfc5e69ba964339f3cb8b40237cf9c28dfe747f + languageName: node + linkType: hard + +"@next/eslint-plugin-next@npm:14.2.23": + version: 14.2.23 + resolution: "@next/eslint-plugin-next@npm:14.2.23" + dependencies: + glob: 10.3.10 + checksum: 17cdf221f59cd24d82011dcc98d7c389ae710197e7bdb26c04e2ee3a1beb5db728e9a928db3adfd490d0765e54be849942602379ffdfb062ed5cbd863c060a3d + languageName: node + linkType: hard + +"@next/mdx@npm:^15.1.4": + version: 15.1.4 + resolution: "@next/mdx@npm:15.1.4" + dependencies: + source-map: ^0.7.0 + peerDependencies: + "@mdx-js/loader": ">=0.15.0" + "@mdx-js/react": ">=0.15.0" + peerDependenciesMeta: + "@mdx-js/loader": + optional: true + "@mdx-js/react": + optional: true + checksum: 3a0120fface0a8e5bc7d7890c51f41da9337eb340aa29b572897359beb53fd028019224f4d411abefcae6d3445d76873aef89c97e2824df07e903e9f34f17f15 + languageName: node + linkType: hard + +"@next/swc-darwin-arm64@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-darwin-arm64@npm:14.2.23" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-darwin-x64@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-darwin-x64@npm:14.2.23" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@next/swc-linux-arm64-gnu@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-linux-arm64-gnu@npm:14.2.23" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-arm64-musl@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-linux-arm64-musl@npm:14.2.23" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-linux-x64-gnu@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-linux-x64-gnu@npm:14.2.23" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@next/swc-linux-x64-musl@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-linux-x64-musl@npm:14.2.23" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@next/swc-win32-arm64-msvc@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-win32-arm64-msvc@npm:14.2.23" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@next/swc-win32-ia32-msvc@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-win32-ia32-msvc@npm:14.2.23" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@next/swc-win32-x64-msvc@npm:14.2.23": + version: 14.2.23 + resolution: "@next/swc-win32-x64-msvc@npm:14.2.23" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: ^1.1.9 + checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: ^1.6.0 + checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + languageName: node + linkType: hard + +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f + languageName: node + linkType: hard + +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 + languageName: node + linkType: hard + +"@rushstack/eslint-patch@npm:^1.3.3": + version: 1.10.5 + resolution: "@rushstack/eslint-patch@npm:1.10.5" + checksum: c7df90efeb77e4311f70549c1b0c41455e3a4f0c0cf2696e560d9a535f129d63ab84c98d0a3de95ed2d369d5281b541af819f99002bfd38e185e59c355b58d69 + languageName: node + linkType: hard + +"@shikijs/core@npm:1.26.1": + version: 1.26.1 + resolution: "@shikijs/core@npm:1.26.1" + dependencies: + "@shikijs/engine-javascript": 1.26.1 + "@shikijs/engine-oniguruma": 1.26.1 + "@shikijs/types": 1.26.1 + "@shikijs/vscode-textmate": ^10.0.1 + "@types/hast": ^3.0.4 + hast-util-to-html: ^9.0.4 + checksum: 1528f7308deee2b2cac32a06180d97cc31e9ac633a499d096b41a0d298603868e5183bb5c3fbe868eb7e72ccb61c16ed4bfe356d227e09791983f080d53a32dd + languageName: node + linkType: hard + +"@shikijs/engine-javascript@npm:1.26.1": + version: 1.26.1 + resolution: "@shikijs/engine-javascript@npm:1.26.1" + dependencies: + "@shikijs/types": 1.26.1 + "@shikijs/vscode-textmate": ^10.0.1 + oniguruma-to-es: 0.10.0 + checksum: 45783dfed301f3dbd7969e6009f80ac29ab029ef3b67b65b4de93c9a14fe0c8573debc99e23d05a5830e96395cff4c5e553df6d9311bb843684854d669c1b413 + languageName: node + linkType: hard + +"@shikijs/engine-oniguruma@npm:1.26.1": + version: 1.26.1 + resolution: "@shikijs/engine-oniguruma@npm:1.26.1" + dependencies: + "@shikijs/types": 1.26.1 + "@shikijs/vscode-textmate": ^10.0.1 + checksum: 163926e8d15bddfdccb17804bc3acf67b382f0274c2e532af23db7aadf215052fbb320e4d335c9c6fb3887f0c644b883f7ab2f01c5ec1d6b2c23509115993f52 + languageName: node + linkType: hard + +"@shikijs/langs@npm:1.26.1": + version: 1.26.1 + resolution: "@shikijs/langs@npm:1.26.1" + dependencies: + "@shikijs/types": 1.26.1 + checksum: d1cd9e8f62fea988a63fedfedbfc560e84dc08e0102861e30975c64beecf87a564420a4bb547e1f98695e869d859168cab927e0ad5cfe2bc42caf2f909fc7864 + languageName: node + linkType: hard + +"@shikijs/themes@npm:1.26.1": + version: 1.26.1 + resolution: "@shikijs/themes@npm:1.26.1" + dependencies: + "@shikijs/types": 1.26.1 + checksum: 578310b6a2884b2d2e58911ad11016001eb4632bda791bad4981a39d5d3f0f8aaac8b53a5cb5ab2630df67ed9695d339338aa19606b7afb27e806bfe2f2be739 + languageName: node + linkType: hard + +"@shikijs/types@npm:1.26.1": + version: 1.26.1 + resolution: "@shikijs/types@npm:1.26.1" + dependencies: + "@shikijs/vscode-textmate": ^10.0.1 + "@types/hast": ^3.0.4 + checksum: e4b08016dc1dbdf022830508e3ea34c7aa3dc5b260cad44263f90ea4a5c3f226115748b76c3022887e41837fe82234587ce31f2bae3cfbdf5a913cd51d70c007 + languageName: node + linkType: hard + +"@shikijs/vscode-textmate@npm:^10.0.1": + version: 10.0.1 + resolution: "@shikijs/vscode-textmate@npm:10.0.1" + checksum: c5a8490417b9439b055844c6c09c3435fc435b1fc3923eb28f05ee346fd68e69df2d93cdaab319a51193970558ff1bf49c5ab047c9ed4fd86c3f9d062457a565 + languageName: node + linkType: hard + +"@storybook/components@npm:8.4.7": + version: 8.4.7 + resolution: "@storybook/components@npm:8.4.7" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: e39fb81e8386db4f3f76cbf4f82e50512fed2f65a581951c0b61e00c9834c20cfff7f717e936353275dadfe6a25ffaac5d47151adbe1e3be85e709f8a64f6a15 + languageName: node + linkType: hard + +"@storybook/core@npm:8.4.7": + version: 8.4.7 + resolution: "@storybook/core@npm:8.4.7" + dependencies: + "@storybook/csf": ^0.1.11 + better-opn: ^3.0.2 + browser-assert: ^1.2.1 + esbuild: ^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 + esbuild-register: ^3.5.0 + jsdoc-type-pratt-parser: ^4.0.0 + process: ^0.11.10 + recast: ^0.23.5 + semver: ^7.6.2 + util: ^0.12.5 + ws: ^8.2.3 + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + checksum: 969cde2203c9c2c744f2a1d2858b2adeb7d57fc75e703f64187fcf0056eb7da48d0507d919718c0866952dda084eb51d79e65a90abec8bb0dcb404b542a6872f + languageName: node + linkType: hard + +"@storybook/csf@npm:^0.1.11": + version: 0.1.13 + resolution: "@storybook/csf@npm:0.1.13" + dependencies: + type-fest: ^2.19.0 + checksum: 78cfd8348e74fdd22bc7d14b443b8ad28b7e797ce147beeab4a1bed6c4e6885287fdaebbcad6efc104819a924121175d461c16e425a4b4f5903cec8f6be6f440 + languageName: node + linkType: hard + +"@storybook/global@npm:^5.0.0": + version: 5.0.0 + resolution: "@storybook/global@npm:5.0.0" + checksum: ede0ad35ec411fe31c61150dbd118fef344d1d0e72bf5d3502368e35cf68126f6b7ae4a0ab5e2ffe2f0baa3b4286f03ad069ba3e098e1725449ef08b7e154ba8 + languageName: node + linkType: hard + +"@storybook/manager-api@npm:8.4.7": + version: 8.4.7 + resolution: "@storybook/manager-api@npm:8.4.7" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 2b826ec55de7ea0b5b5151dfa896f3e7eddfd36ede61f8a7ad14a37733d5d5645565f863dbde7e2272f1e9b5717f26de7802ae60e297a2647ee2c4c072ed3069 + languageName: node + linkType: hard + +"@storybook/preview-api@npm:8.4.7": + version: 8.4.7 + resolution: "@storybook/preview-api@npm:8.4.7" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 1c467bb2c16c5998b9bc4c2c013e6786936d5f6a373ad8d8ab1beb626616c3187329fdfc3a709663b4af963c7e5789a1401166c6e2a3a66a12f66e858aa94e91 + languageName: node + linkType: hard + +"@storybook/react-dom-shim@npm:8.4.7": + version: 8.4.7 + resolution: "@storybook/react-dom-shim@npm:8.4.7" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.7 + checksum: 4de29cbb990bfb2f310440aa995b024faa93fd1d5c7c942d6d661d590693eb56e0567a141c14faca63e8b24fc2f6b6b44c02af37cd2d5b469c1129b0e78fc79d + languageName: node + linkType: hard + +"@storybook/react@npm:^8.4.7": + version: 8.4.7 + resolution: "@storybook/react@npm:8.4.7" + dependencies: + "@storybook/components": 8.4.7 + "@storybook/global": ^5.0.0 + "@storybook/manager-api": 8.4.7 + "@storybook/preview-api": 8.4.7 + "@storybook/react-dom-shim": 8.4.7 + "@storybook/theming": 8.4.7 + peerDependencies: + "@storybook/test": 8.4.7 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.7 + typescript: ">= 4.2.x" + peerDependenciesMeta: + "@storybook/test": + optional: true + typescript: + optional: true + checksum: 5ad2137f8f5f0a34cb90e2582fd574aff888c544f0f9907472d930d4fb1f444124aa84188a0b5d661cc6c4c0bf7210b1e616a53b4be3f2df2479165571fa9085 + languageName: node + linkType: hard + +"@storybook/theming@npm:8.4.7": + version: 8.4.7 + resolution: "@storybook/theming@npm:8.4.7" + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + checksum: 47d29993c33bb29994d227af30e099579b7cf760652ed743020f5d7e5a5974f59a6ebeb1cc8995e6158da9cf768a8d2f559d1d819cc082d0bcdb056d85fdcb29 + languageName: node + linkType: hard + +"@swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 + languageName: node + linkType: hard + +"@swc/helpers@npm:0.5.5": + version: 0.5.5 + resolution: "@swc/helpers@npm:0.5.5" + dependencies: + "@swc/counter": ^0.1.3 + tslib: ^2.4.0 + checksum: d4f207b191e54b29460804ddf2984ba6ece1d679a0b2f6a9c765dcf27bba92c5769e7965668a4546fb9f1021eaf0ff9be4bf5c235ce12adcd65acdfe77187d11 + languageName: node + linkType: hard + +"@types/acorn@npm:^4.0.0": + version: 4.0.6 + resolution: "@types/acorn@npm:4.0.6" + dependencies: + "@types/estree": "*" + checksum: 60e1fd28af18d6cb54a93a7231c7c18774a9a8739c9b179e9e8750dca631e10cbef2d82b02830ea3f557b1d121e6406441e9e1250bd492dc81d4b3456e76e4d4 + languageName: node + linkType: hard + +"@types/debug@npm:^4.0.0": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "*" + checksum: 47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 + languageName: node + linkType: hard + +"@types/estree-jsx@npm:^1.0.0": + version: 1.0.5 + resolution: "@types/estree-jsx@npm:1.0.5" + dependencies: + "@types/estree": "*" + checksum: a028ab0cd7b2950168a05c6a86026eb3a36a54a4adfae57f13911d7b49dffe573d9c2b28421b2d029b49b3d02fcd686611be2622dc3dad6d9791166c083f6008 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.0": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 + languageName: node + linkType: hard + +"@types/hast@npm:^3.0.0, @types/hast@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" + dependencies: + "@types/unist": "*" + checksum: 7a973e8d16fcdf3936090fa2280f408fb2b6a4f13b42edeb5fbd614efe042b82eac68e298e556d50f6b4ad585a3a93c353e9c826feccdc77af59de8dd400d044 + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac + languageName: node + linkType: hard + +"@types/mdast@npm:^4.0.0": + version: 4.0.4 + resolution: "@types/mdast@npm:4.0.4" + dependencies: + "@types/unist": "*" + checksum: 20c4e9574cc409db662a35cba52b068b91eb696b3049e94321219d47d34c8ccc99a142be5c76c80a538b612457b03586bc2f6b727a3e9e7530f4c8568f6282ee + languageName: node + linkType: hard + +"@types/mdx@npm:^2.0.0, @types/mdx@npm:^2.0.13": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 195137b548e75a85f0558bb1ca5088aff1c01ae0fc64454da06085b7513a043356d0bb51ed559d3cbc7ad724ccd8cef2a7d07d014b89a47a74dff8875ceb3b15 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a + languageName: node + linkType: hard + +"@types/node@npm:^20": + version: 20.17.12 + resolution: "@types/node@npm:20.17.12" + dependencies: + undici-types: ~6.19.2 + checksum: 0c0dbeb4e1480a23071ec38e97bb3d776e0ae9828174bf45f9edcf277caa955945cb10d31d84f7a73c66aaf92ae2e022be6331bd00a4bed1f2ad9639a411d17e + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.14 + resolution: "@types/prop-types@npm:15.7.14" + checksum: d0c5407b9ccc3dd5fae0ccf9b1007e7622ba5e6f1c18399b4f24dff33619d469da4b9fa918a374f19dc0d9fe6a013362aab0b844b606cfc10676efba3f5f736d + languageName: node + linkType: hard + +"@types/react-dom@npm:^18": + version: 18.3.5 + resolution: "@types/react-dom@npm:18.3.5" + peerDependencies: + "@types/react": ^18.0.0 + checksum: 95c757684f71e761515c5a11299e5feec550c72bb52975487f360e6f0d359b26454c26eaf2ce45dd22748205aa9b2c2fe0abe7005ebcbd233a7615283ac39a7d + languageName: node + linkType: hard + +"@types/react@npm:^18": + version: 18.3.18 + resolution: "@types/react@npm:18.3.18" + dependencies: + "@types/prop-types": "*" + csstype: ^3.0.2 + checksum: 5933597bc9f53e282f0438f0bb76d0f0fab60faabe760ea806e05ffe6f5c61b9b4d363e1a03a8fea47c510d493c6cf926cdeeba9f7074fa97b61940c350245e7 + languageName: node + linkType: hard + +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.3 + resolution: "@types/unist@npm:3.0.3" + checksum: 96e6453da9e075aaef1dc22482463898198acdc1eeb99b465e65e34303e2ec1e3b1ed4469a9118275ec284dc98019f63c3f5d49422f0e4ac707e5ab90fb3b71a + languageName: node + linkType: hard + +"@types/unist@npm:^2.0.0": + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version: 8.19.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.19.1" + dependencies: + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 8.19.1 + "@typescript-eslint/type-utils": 8.19.1 + "@typescript-eslint/utils": 8.19.1 + "@typescript-eslint/visitor-keys": 8.19.1 + graphemer: ^1.4.0 + ignore: ^5.3.1 + natural-compare: ^1.4.0 + ts-api-utils: ^2.0.0 + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 07774aeb373882c9177b0da061dde12f08202107696d9947f11819f3e4b6223f922d944f1c8967438685041a9b0a5a61cfed1d246bb168b8a31c8ec1792c2405 + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version: 8.19.1 + resolution: "@typescript-eslint/parser@npm:8.19.1" + dependencies: + "@typescript-eslint/scope-manager": 8.19.1 + "@typescript-eslint/types": 8.19.1 + "@typescript-eslint/typescript-estree": 8.19.1 + "@typescript-eslint/visitor-keys": 8.19.1 + debug: ^4.3.4 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: a321f03ecdf1b80da6b574cf15225d77b7d15835b8ebfdbfc98b3d8aa881c0ce23b7050c35f03aa0528db8a00ccca69391eeba4f7a10ed579b29e77c7bf3c368 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/scope-manager@npm:8.19.1" + dependencies: + "@typescript-eslint/types": 8.19.1 + "@typescript-eslint/visitor-keys": 8.19.1 + checksum: 972ee3bc3339f549e206f01b3db30b71d99090b4d581ff1b73ce833d95e4e2f6520f7f227174c53393a2646980068463daaaeb945e417458cf6f37d60e31c173 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/type-utils@npm:8.19.1" + dependencies: + "@typescript-eslint/typescript-estree": 8.19.1 + "@typescript-eslint/utils": 8.19.1 + debug: ^4.3.4 + ts-api-utils: ^2.0.0 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 9345ba9f2399adc9b45a8b41e68749be4485cfd4e24558c42eb2a12199610370473307bc823e6715e4d1f136cd3f9a0a61a05a27bc4ce664468eab7f76efb549 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/types@npm:8.19.1" + checksum: 76756b9c5496e1463255aa3c881eaec51a6fe718894b91f49929e9e7e258111d86a9c38a9c76b5ada29293a4cb60b96cffac82a203ec47053aa138f298ffab67 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.19.1" + dependencies: + "@typescript-eslint/types": 8.19.1 + "@typescript-eslint/visitor-keys": 8.19.1 + debug: ^4.3.4 + fast-glob: ^3.3.2 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^2.0.0 + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 982ac1735d076c595c3b6bfb4c2d02a41bb3cc27d8d05bdac9a08e9f007be3f151ded0f7e691de00b2aa86458e1cd5ef49cf1c19dd38d24269b1f107db2a700b + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/utils@npm:8.19.1" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@typescript-eslint/scope-manager": 8.19.1 + "@typescript-eslint/types": 8.19.1 + "@typescript-eslint/typescript-estree": 8.19.1 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 745c24b9538c2c4e41cda0cfe73b78d1a8aaec3958ece128cf086f1e8d09f3f53b3299610570ae5a921300c05e43d181eda099acfb3218fadf3b310bf49b290e + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.19.1" + dependencies: + "@typescript-eslint/types": 8.19.1 + eslint-visitor-keys: ^4.2.0 + checksum: dc68a7e46cd73579c81ec5594315a8564fcc74984b3d399331e66abd48db956acfa24d445660f133609d7a969a88819ca73ded493f109f42ba659958df52be7e + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": + version: 1.2.1 + resolution: "@ungap/structured-clone@npm:1.2.1" + checksum: 1e3b9fef293118861f0b2159b3695fc7f3793c0707095888ebb3ac7183f78c390e68f04cd4b4cf9ac979ae0da454505e08b3aae887cdd639609a3fe529e19e59 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 + languageName: node + linkType: hard + +"acorn@npm:^8.0.0, acorn@npm:^8.9.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + 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 + checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + languageName: node + linkType: hard + +"aria-query@npm:^5.3.2": + version: 5.3.2 + resolution: "aria-query@npm:5.3.2" + checksum: d971175c85c10df0f6d14adfe6f1292409196114ab3c62f238e208b53103686f46cc70695a4f775b73bc65f6a09b6a092fd963c4f3a5a7d690c8fc5094925717 + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: ^1.0.3 + is-array-buffer: ^3.0.5 + checksum: 0ae3786195c3211b423e5be8dd93357870e6fb66357d81da968c2c39ef43583ef6eece1f9cb1caccdae4806739c65dea832b44b8593414313cd76a89795fca63 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": + version: 3.1.8 + resolution: "array-includes@npm:3.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.4 + is-string: ^1.0.7 + checksum: eb39ba5530f64e4d8acab39297c11c1c5be2a4ea188ab2b34aba5fb7224d918f77717a9d57a3e2900caaa8440e59431bdaf5c974d5212ef65d97f132e38e2d91 + languageName: node + linkType: hard + +"array.prototype.findlast@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlast@npm:1.2.5" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-shim-unscopables: ^1.0.2 + checksum: 83ce4ad95bae07f136d316f5a7c3a5b911ac3296c3476abe60225bc4a17938bf37541972fcc37dd5adbc99cbb9c928c70bbbfc1c1ce549d41a415144030bb446 + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.5": + version: 1.2.5 + resolution: "array.prototype.findlastindex@npm:1.2.5" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-shim-unscopables: ^1.0.2 + checksum: 2c81cff2a75deb95bf1ed89b6f5f2bfbfb882211e3b7cc59c3d6b87df774cd9d6b36949a8ae39ac476e092c1d4a4905f5ee11a86a456abb10f35f8211ae4e710 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" + dependencies: + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-abstract: ^1.23.5 + es-shim-unscopables: ^1.0.2 + checksum: 5d5a7829ab2bb271a8d30a1c91e6271cef0ec534593c0fe6d2fb9ebf8bb62c1e5326e2fddcbbcbbe5872ca04f5e6b54a1ecf092e0af704fb538da9b2bfd95b40 + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" + dependencies: + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-abstract: ^1.23.5 + es-shim-unscopables: ^1.0.2 + checksum: 11b4de09b1cf008be6031bb507d997ad6f1892e57dc9153583de6ebca0f74ea403fffe0f203461d359de05048d609f3f480d9b46fed4099652d8b62cc972f284 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.4": + version: 1.1.4 + resolution: "array.prototype.tosorted@npm:1.1.4" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + es-errors: ^1.3.0 + es-shim-unscopables: ^1.0.2 + checksum: e4142d6f556bcbb4f393c02e7dbaea9af8f620c040450c2be137c9cbbd1a17f216b9c688c5f2c08fbb038ab83f55993fa6efdd9a05881d84693c7bcb5422127a + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" + dependencies: + array-buffer-byte-length: ^1.0.1 + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-abstract: ^1.23.5 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + is-array-buffer: ^3.0.4 + checksum: b1d1fd20be4e972a3779b1569226f6740170dca10f07aa4421d42cefeec61391e79c557cda8e771f5baefe47d878178cd4438f60916ce831813c08132bced765 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 0a64706609a179233aac23817837abab614f3548c252a2d3d79ea1e10c74aa28a0846e11f466cf72771b6ed8713abc094dcf8c40c3ec4207da163efa525a94a8 + languageName: node + linkType: hard + +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" + dependencies: + tslib: ^2.0.1 + checksum: 21c186da9fdb1d8087b1b7dabbc4059f91aa5a1e593a9776b4393cc1eaa857e741b2dda678d20e34b16727b78fef3ab59cf8f0c75ed1ba649c78fe194e5c114b + languageName: node + linkType: hard + +"astring@npm:^1.8.0": + version: 1.9.0 + resolution: "astring@npm:1.9.0" + bin: + astring: bin/astring + checksum: 69ffde3643f5280c6846231a995af878a94d3eab41d1a19a86b8c15f456453f63a7982cf5dd72d270b9f50dd26763a3e1e48377c961b7df16f550132b6dba805 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: ^1.0.0 + checksum: 1aa3ffbfe6578276996de660848b6e95669d9a95ad149e3dd0c0cda77db6ee1dbd9d1dd723b65b6d277b882dd0c4b91a654ae9d3cf9e1254b7e93e4908d78fd3 + languageName: node + linkType: hard + +"axe-core@npm:^4.10.0": + version: 4.10.2 + resolution: "axe-core@npm:4.10.2" + checksum: 2b9b1c93ea73ea9f206604e4e17bd771d2d835f077bde54517d73028b8865c69b209460e73d5b109968cbdb39ab3d28943efa5695189bd79e16421ce1706719e + languageName: node + linkType: hard + +"axobject-query@npm:^4.1.0": + version: 4.1.0 + resolution: "axobject-query@npm:4.1.0" + checksum: 7d1e87bf0aa7ae7a76cd39ab627b7c48fda3dc40181303d9adce4ba1d5b5ce73b5e5403ee6626ec8e91090448c887294d6144e24b6741a976f5be9347e3ae1df + languageName: node + linkType: hard + +"bail@npm:^2.0.0": + version: 2.0.2 + resolution: "bail@npm:2.0.2" + checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + languageName: node + linkType: hard + +"better-opn@npm:^3.0.2": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" + dependencies: + open: ^8.0.4 + checksum: 1471552fa7f733561e7f49e812be074b421153006ca744de985fb6d38939807959fc5fe9cb819cf09f864782e294704fd3b31711ea14c115baf3330a2f1135de + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: ^1.0.0 + checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + languageName: node + linkType: hard + +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: ^7.1.1 + checksum: b95aa0b3bd909f6cd1720ffcf031aeaf46154dd88b4da01f9a1d3f7ea866a79eba76a6d01cbc3c422b2ee5cdc39a4f02491058d5df0d7bf6e6a162a832df1f69 + languageName: node + linkType: hard + +"browser-assert@npm:^1.2.1": + version: 1.2.1 + resolution: "browser-assert@npm:1.2.1" + checksum: 8b2407cd04c1ed592cf892dec35942b7d72635829221e0788c9a16c4d2afa8b7156bc9705b1c4b32c30d88136c576fda3cbcb8f494d6f865264c706ea8798d92 + languageName: node + linkType: hard + +"busboy@npm:1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: ^1.1.0 + checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "call-bind-apply-helpers@npm:1.0.1" + dependencies: + es-errors: ^1.3.0 + function-bind: ^1.1.2 + checksum: 3c55343261bb387c58a4762d15ad9d42053659a62681ec5eb50690c6b52a4a666302a01d557133ce6533e8bd04530ee3b209f23dd06c9577a1925556f8fcccdf + languageName: node + linkType: hard + +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: ^1.0.0 + es-define-property: ^1.0.0 + get-intrinsic: ^1.2.4 + set-function-length: ^1.2.2 + checksum: aa2899bce917a5392fd73bd32e71799c37c0b7ab454e0ed13af7f6727549091182aade8bbb7b55f304a5bc436d543241c14090fb8a3137e9875e23f444f4f5a9 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": + version: 1.0.3 + resolution: "call-bound@npm:1.0.3" + dependencies: + call-bind-apply-helpers: ^1.0.1 + get-intrinsic: ^1.2.6 + checksum: a93bbe0f2d0a2d6c144a4349ccd0593d5d0d5d9309b69101710644af8964286420062f2cc3114dca120b9bc8cc07507952d4b1b3ea7672e0d7f6f1675efedb32 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001579": + version: 1.0.30001690 + resolution: "caniuse-lite@npm:1.0.30001690" + checksum: f2c1b595f15d8de4d9ccd155d61ac9f00ac62f1515870505a0186266fd52aef169fcddc90d8a4814e52b77107244806466fadc2c216662f23f1022a430e735ee + languageName: node + linkType: hard + +"canon-docs@workspace:.": + version: 0.0.0-use.local + resolution: "canon-docs@workspace:." + dependencies: + "@mdx-js/loader": ^3.1.0 + "@mdx-js/react": ^3.1.0 + "@next/mdx": ^15.1.4 + "@storybook/react": ^8.4.7 + "@types/mdx": ^2.0.13 + "@types/node": ^20 + "@types/react": ^18 + "@types/react-dom": ^18 + concurrently: ^9.1.2 + eslint: ^8 + eslint-config-next: 14.2.23 + lightningcss: ^1.28.2 + next: 14.2.23 + react: ^18 + react-dom: ^18 + react-frame-component: ^5.2.7 + shiki: ^1.26.1 + storybook: ^8.4.7 + typescript: ^5 + languageName: unknown + linkType: soft + +"ccount@npm:^2.0.0": + version: 2.0.1 + resolution: "ccount@npm:2.0.1" + checksum: 48193dada54c9e260e0acf57fc16171a225305548f9ad20d5471e0f7a8c026aedd8747091dccb0d900cde7df4e4ddbd235df0d8de4a64c71b12f0d3303eeafd4 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + languageName: node + linkType: hard + +"character-entities-html4@npm:^2.0.0": + version: 2.1.0 + resolution: "character-entities-html4@npm:2.1.0" + checksum: 7034aa7c7fa90309667f6dd50499c8a760c3d3a6fb159adb4e0bada0107d194551cdbad0714302f62d06ce4ed68565c8c2e15fdef2e8f8764eb63fa92b34b11d + languageName: node + linkType: hard + +"character-entities-legacy@npm:^3.0.0": + version: 3.0.0 + resolution: "character-entities-legacy@npm:3.0.0" + checksum: 7582af055cb488b626d364b7d7a4e46b06abd526fb63c0e4eb35bcb9c9799cc4f76b39f34fdccef2d1174ac95e53e9ab355aae83227c1a2505877893fce77731 + languageName: node + linkType: hard + +"character-entities@npm:^2.0.0": + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def + languageName: node + linkType: hard + +"character-reference-invalid@npm:^2.0.0": + version: 2.0.1 + resolution: "character-reference-invalid@npm:2.0.1" + checksum: 98d3b1a52ae510b7329e6ee7f6210df14f1e318c5415975d4c9e7ee0ef4c07875d47c6e74230c64551f12f556b4a8ccc24d9f3691a2aa197019e72a95e9297ee + languageName: node + linkType: hard + +"client-only@npm:0.0.1": + version: 0.0.1 + resolution: "client-only@npm:0.0.1" + checksum: 0c16bf660dadb90610553c1d8946a7fdfb81d624adea073b8440b7d795d5b5b08beb3c950c6a2cf16279365a3265158a236876d92bce16423c485c322d7dfaf8 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.1 + wrap-ansi: ^7.0.0 + checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + languageName: node + linkType: hard + +"collapse-white-space@npm:^2.0.0": + version: 2.1.0 + resolution: "collapse-white-space@npm:2.1.0" + checksum: c8978b1f4e7d68bf846cfdba6c6689ce8910511df7d331eb6e6757e51ceffb52768d59a28db26186c91dcf9594955b59be9f8ccd473c485790f5d8b90dc6726f + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + languageName: node + linkType: hard + +"comma-separated-tokens@npm:^2.0.0": + version: 2.0.3 + resolution: "comma-separated-tokens@npm:2.0.3" + checksum: e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + languageName: node + linkType: hard + +"concurrently@npm:^9.1.2": + version: 9.1.2 + resolution: "concurrently@npm:9.1.2" + dependencies: + chalk: ^4.1.2 + lodash: ^4.17.21 + rxjs: ^7.8.1 + shell-quote: ^1.8.1 + supports-color: ^8.1.1 + tree-kill: ^1.2.2 + yargs: ^17.7.2 + bin: + conc: dist/bin/concurrently.js + concurrently: dist/bin/concurrently.js + checksum: 9e25e8ee6272ada26739aff1fb43e96ac458fafca82f45b8360bdd9115d60bbc679d282dfc52001b861b6e9f32b3063aed975691d8dec9e62807a9679763a1d8 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 8db785cc92d259102725b3c694ec0c823f5619a84741b5c7991b8ad135dfaa66093038a1cc63e03361a6cd28d122be48f2106ae72334e067dd619a51f49eddf7 + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: ^1.0.3 + es-errors: ^1.3.0 + is-data-view: ^1.0.2 + checksum: 1e1cd509c3037ac0f8ba320da3d1f8bf1a9f09b0be09394b5e40781b8cc15ff9834967ba7c9f843a425b34f9fe14ce44cf055af6662c44263424c1eb8d65659b + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: ^1.0.3 + es-errors: ^1.3.0 + is-data-view: ^1.0.2 + checksum: 3600c91ced1cfa935f19ef2abae11029e01738de8d229354d3b2a172bf0d7e4ed08ff8f53294b715569fdf72dfeaa96aa7652f479c0f60570878d88e7e8bddf6 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + is-data-view: ^1.0.1 + checksum: 8dd492cd51d19970876626b5b5169fbb67ca31ec1d1d3238ee6a71820ca8b80cafb141c485999db1ee1ef02f2cc3b99424c5eda8d59e852d9ebb79ab290eb5ee + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: ^2.1.1 + checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + languageName: node + linkType: hard + +"debug@npm:^4.0.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: ^2.1.3 + peerDependenciesMeta: + supports-color: + optional: true + checksum: fb42df878dd0e22816fc56e1fdca9da73caa85212fbe40c868b1295a6878f9101ae684f4eeef516c13acfc700f5ea07f1136954f43d4cd2d477a811144136479 + languageName: node + linkType: hard + +"decode-named-character-reference@npm:^1.0.0": + version: 1.0.2 + resolution: "decode-named-character-reference@npm:1.0.2" + dependencies: + character-entities: ^2.0.0 + checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: ^1.0.0 + es-errors: ^1.3.0 + gopd: ^1.0.1 + checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 0115fdb065e0490918ba271d7339c42453d209d4cb619dfe635870d906731eff3e1ade8028bb461ea27ce8264ec5e22c6980612d332895977e89c1bbc80fcee2 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: ^1.0.1 + has-property-descriptors: ^1.0.0 + object-keys: ^1.1.1 + checksum: b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 + languageName: node + linkType: hard + +"dequal@npm:^2.0.0": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 + languageName: node + linkType: hard + +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: daaaed925ffa7889bd91d56e9624e6c8033911bb60f3a50a74a87500680652969dbaab9526d1e200a4c94acf80fc862a22131841145a0a8482d60a99c24f4a3e + languageName: node + linkType: hard + +"devlop@npm:^1.0.0, devlop@npm:^1.1.0": + version: 1.1.0 + resolution: "devlop@npm:1.1.0" + dependencies: + dequal: ^2.0.0 + checksum: d2ff650bac0bb6ef08c48f3ba98640bb5fec5cce81e9957eb620408d1bab1204d382a45b785c6b3314dc867bb0684936b84c6867820da6db97cbb5d3c15dd185 + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: ^2.0.2 + checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: ^2.0.2 + checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: ^1.0.1 + es-errors: ^1.3.0 + gopd: ^1.2.0 + checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed + languageName: node + linkType: hard + +"emoji-regex-xs@npm:^1.0.0": + version: 1.0.0 + resolution: "emoji-regex-xs@npm:1.0.0" + checksum: c33be159da769836f83281f2802d90169093ebf3c2c1643d6801d891c53beac5ef785fd8279f9b02fa6dc6c47c367818e076949f1e13bd1b3f921b416de4cbea + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.15.0": + version: 5.18.0 + resolution: "enhanced-resolve@npm:5.18.0" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: 77c6b11f0d19f21f52214e5a2c0dfb7070decb4045572f44be4cacf92b4be5e2c1d9a4c044a226d1003ca9daf9b71d498d256e7520ff5060f23d0284f814d392 + languageName: node + linkType: hard + +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9": + version: 1.23.9 + resolution: "es-abstract@npm:1.23.9" + dependencies: + array-buffer-byte-length: ^1.0.2 + arraybuffer.prototype.slice: ^1.0.4 + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + data-view-buffer: ^1.0.2 + data-view-byte-length: ^1.0.2 + data-view-byte-offset: ^1.0.1 + es-define-property: ^1.0.1 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + es-set-tostringtag: ^2.1.0 + es-to-primitive: ^1.3.0 + function.prototype.name: ^1.1.8 + get-intrinsic: ^1.2.7 + get-proto: ^1.0.0 + get-symbol-description: ^1.1.0 + globalthis: ^1.0.4 + gopd: ^1.2.0 + has-property-descriptors: ^1.0.2 + has-proto: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + internal-slot: ^1.1.0 + is-array-buffer: ^3.0.5 + is-callable: ^1.2.7 + is-data-view: ^1.0.2 + is-regex: ^1.2.1 + is-shared-array-buffer: ^1.0.4 + is-string: ^1.1.1 + is-typed-array: ^1.1.15 + is-weakref: ^1.1.0 + math-intrinsics: ^1.1.0 + object-inspect: ^1.13.3 + object-keys: ^1.1.1 + object.assign: ^4.1.7 + own-keys: ^1.0.1 + regexp.prototype.flags: ^1.5.3 + safe-array-concat: ^1.1.3 + safe-push-apply: ^1.0.0 + safe-regex-test: ^1.1.0 + set-proto: ^1.0.0 + string.prototype.trim: ^1.2.10 + string.prototype.trimend: ^1.0.9 + string.prototype.trimstart: ^1.0.8 + typed-array-buffer: ^1.0.3 + typed-array-byte-length: ^1.0.3 + typed-array-byte-offset: ^1.0.4 + typed-array-length: ^1.0.7 + unbox-primitive: ^1.1.0 + which-typed-array: ^1.1.18 + checksum: f3ee2614159ca197f97414ab36e3f406ee748ce2f97ffbf09e420726db5a442ce13f1e574601468bff6e6eb81588e6c9ce1ac6c03868a37c7cd48ac679f8485a + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.3 + define-properties: ^1.2.1 + es-abstract: ^1.23.6 + es-errors: ^1.3.0 + es-set-tostringtag: ^2.0.3 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.6 + globalthis: ^1.0.4 + gopd: ^1.2.0 + has-property-descriptors: ^1.0.2 + has-proto: ^1.2.0 + has-symbols: ^1.1.0 + internal-slot: ^1.1.0 + iterator.prototype: ^1.1.4 + safe-array-concat: ^1.1.3 + checksum: 952808dd1df3643d67ec7adf20c30b36e5eecadfbf36354e6f39ed3266c8e0acf3446ce9bc465e38723d613cb1d915c1c07c140df65bdce85da012a6e7bda62b + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0": + version: 1.0.0 + resolution: "es-object-atoms@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + checksum: 26f0ff78ab93b63394e8403c353842b2272836968de4eafe97656adfb8a7c84b9099bf0fe96ed58f4a4cddc860f6e34c77f91649a58a5daa4a9c40b902744e3c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: ^2.0.0 + checksum: 432bd527c62065da09ed1d37a3f8e623c423683285e6188108286f4a1e8e164a5bcbfbc0051557c7d14633cd2a41ce24c7048e6bbb66a985413fd32f1be72626 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: ^1.2.7 + is-date-object: ^1.0.5 + is-symbol: ^1.0.4 + checksum: 966965880356486cd4d1fe9a523deda2084c81b3702d951212c098f5f2ee93605d1b7c1840062efb48a07d892641c7ed1bc194db563645c0dd2b919cb6d65b93 + languageName: node + linkType: hard + +"esast-util-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "esast-util-from-estree@npm:2.0.0" + dependencies: + "@types/estree-jsx": ^1.0.0 + devlop: ^1.0.0 + estree-util-visit: ^2.0.0 + unist-util-position-from-estree: ^2.0.0 + checksum: b9ea5b6db25decbe7c3be23a00251542641c9538499905d740d76fd5c9fea9f727ad1d0cce4f2071b6d9bb2f405f4f11acbdec9b8ea6485649cf60d886b99f28 + languageName: node + linkType: hard + +"esast-util-from-js@npm:^2.0.0": + version: 2.0.1 + resolution: "esast-util-from-js@npm:2.0.1" + dependencies: + "@types/estree-jsx": ^1.0.0 + acorn: ^8.0.0 + esast-util-from-estree: ^2.0.0 + vfile-message: ^4.0.0 + checksum: a262b94d973d8cc80227e083a7f1367028c4acf524e8f8507177626302bac567f260f75ea52321c8a9650e34c47e70bcc4f7696f710002f64b21aaa630e73e43 + languageName: node + linkType: hard + +"esbuild-register@npm:^3.5.0": + version: 3.6.0 + resolution: "esbuild-register@npm:3.6.0" + dependencies: + debug: ^4.3.4 + peerDependencies: + esbuild: ">=0.12 <1" + checksum: 9221e26dde3366398a43183b600d8e9252b8003516cd766983a06c321eb07cf1b6b236948a21e4d1728c17a341c0fa52b49409c951d89fc7bf65d07d43c31a05 + languageName: node + linkType: hard + +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0": + version: 0.24.2 + resolution: "esbuild@npm:0.24.2" + dependencies: + "@esbuild/aix-ppc64": 0.24.2 + "@esbuild/android-arm": 0.24.2 + "@esbuild/android-arm64": 0.24.2 + "@esbuild/android-x64": 0.24.2 + "@esbuild/darwin-arm64": 0.24.2 + "@esbuild/darwin-x64": 0.24.2 + "@esbuild/freebsd-arm64": 0.24.2 + "@esbuild/freebsd-x64": 0.24.2 + "@esbuild/linux-arm": 0.24.2 + "@esbuild/linux-arm64": 0.24.2 + "@esbuild/linux-ia32": 0.24.2 + "@esbuild/linux-loong64": 0.24.2 + "@esbuild/linux-mips64el": 0.24.2 + "@esbuild/linux-ppc64": 0.24.2 + "@esbuild/linux-riscv64": 0.24.2 + "@esbuild/linux-s390x": 0.24.2 + "@esbuild/linux-x64": 0.24.2 + "@esbuild/netbsd-arm64": 0.24.2 + "@esbuild/netbsd-x64": 0.24.2 + "@esbuild/openbsd-arm64": 0.24.2 + "@esbuild/openbsd-x64": 0.24.2 + "@esbuild/sunos-x64": 0.24.2 + "@esbuild/win32-arm64": 0.24.2 + "@esbuild/win32-ia32": 0.24.2 + "@esbuild/win32-x64": 0.24.2 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: e2303f8331887e31330b5a972fb9640ad93dfc5af76cb2156faa9eaa32bac5c403244096cbdafc45622829913e63664dfd88410987e3468df4354492f908a094 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + languageName: node + linkType: hard + +"eslint-config-next@npm:14.2.23": + version: 14.2.23 + resolution: "eslint-config-next@npm:14.2.23" + dependencies: + "@next/eslint-plugin-next": 14.2.23 + "@rushstack/eslint-patch": ^1.3.3 + "@typescript-eslint/eslint-plugin": ^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0 + "@typescript-eslint/parser": ^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint-import-resolver-node: ^0.3.6 + eslint-import-resolver-typescript: ^3.5.2 + eslint-plugin-import: ^2.28.1 + eslint-plugin-jsx-a11y: ^6.7.1 + eslint-plugin-react: ^7.33.2 + eslint-plugin-react-hooks: ^4.5.0 || 5.0.0-canary-7118f5dd7-20230705 + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: ">=3.3.1" + peerDependenciesMeta: + typescript: + optional: true + checksum: ee23822e91c155cb0531c786cf11573b8914bc7dfa3b506c45c1d13d4b0c1b515764bd2744daa9c36bddf3bb7cfff434fa6bd169540a2fb933a336df78e7d850 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: ^3.2.7 + is-core-module: ^2.13.0 + resolve: ^1.22.4 + checksum: 439b91271236b452d478d0522a44482e8c8540bf9df9bd744062ebb89ab45727a3acd03366a6ba2bdbcde8f9f718bab7fe8db64688aca75acf37e04eafd25e22 + languageName: node + linkType: hard + +"eslint-import-resolver-typescript@npm:^3.5.2": + version: 3.7.0 + resolution: "eslint-import-resolver-typescript@npm:3.7.0" + dependencies: + "@nolyfill/is-core-module": 1.0.39 + debug: ^4.3.7 + enhanced-resolve: ^5.15.0 + fast-glob: ^3.3.2 + get-tsconfig: ^4.7.5 + is-bun-module: ^1.0.2 + is-glob: ^4.0.3 + stable-hash: ^0.0.4 + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: e24659fbd91957c9db8de72243a6ffcf891ffd1175bca54d6993a9ddecc352e76d512c7ee22a48ae7d3ec1ae4c492fd2ab649cde636a993f4a42bf4d1ae4d34a + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.12.0": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" + dependencies: + debug: ^3.2.7 + peerDependenciesMeta: + eslint: + optional: true + checksum: be3ac52e0971c6f46daeb1a7e760e45c7c45f820c8cc211799f85f10f04ccbf7afc17039165d56cb2da7f7ca9cec2b3a777013cddf0b976784b37eb9efa24180 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:^2.28.1": + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" + dependencies: + "@rtsao/scc": ^1.1.0 + array-includes: ^3.1.8 + array.prototype.findlastindex: ^1.2.5 + array.prototype.flat: ^1.3.2 + array.prototype.flatmap: ^1.3.2 + debug: ^3.2.7 + doctrine: ^2.1.0 + eslint-import-resolver-node: ^0.3.9 + eslint-module-utils: ^2.12.0 + hasown: ^2.0.2 + is-core-module: ^2.15.1 + is-glob: ^4.0.3 + minimatch: ^3.1.2 + object.fromentries: ^2.0.8 + object.groupby: ^1.0.3 + object.values: ^1.2.0 + semver: ^6.3.1 + string.prototype.trimend: ^1.0.8 + tsconfig-paths: ^3.15.0 + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: b1d2ac268b3582ff1af2a72a2c476eae4d250c100f2e335b6e102036e4a35efa530b80ec578dfc36761fabb34a635b9bf5ab071abe9d4404a4bb054fdf22d415 + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:^6.7.1": + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" + dependencies: + aria-query: ^5.3.2 + array-includes: ^3.1.8 + array.prototype.flatmap: ^1.3.2 + ast-types-flow: ^0.0.8 + axe-core: ^4.10.0 + axobject-query: ^4.1.0 + damerau-levenshtein: ^1.0.8 + emoji-regex: ^9.2.2 + hasown: ^2.0.2 + jsx-ast-utils: ^3.3.5 + language-tags: ^1.0.9 + minimatch: ^3.1.2 + object.fromentries: ^2.0.8 + safe-regex-test: ^1.0.3 + string.prototype.includes: ^2.0.1 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + checksum: 0cc861398fa26ada61ed5703eef5b335495fcb96253263dcd5e399488ff019a2636372021baacc040e3560d1a34bfcd5d5ad9f1754f44cd0509c956f7df94050 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": + version: 5.0.0-canary-7118f5dd7-20230705 + resolution: "eslint-plugin-react-hooks@npm:5.0.0-canary-7118f5dd7-20230705" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 20e334e60bf5e56cf9f760598411847525c3ff826e6ae7757c8efdc60b33d47a97ddbe1b94ce95956ea9f7bbef37995b19c716be50bd44e6a1e789cba08b6224 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.33.2": + version: 7.37.3 + resolution: "eslint-plugin-react@npm:7.37.3" + dependencies: + array-includes: ^3.1.8 + array.prototype.findlast: ^1.2.5 + array.prototype.flatmap: ^1.3.3 + array.prototype.tosorted: ^1.1.4 + doctrine: ^2.1.0 + es-iterator-helpers: ^1.2.1 + estraverse: ^5.3.0 + hasown: ^2.0.2 + jsx-ast-utils: ^2.4.1 || ^3.0.0 + minimatch: ^3.1.2 + object.entries: ^1.1.8 + object.fromentries: ^2.0.8 + object.values: ^1.2.1 + prop-types: ^15.8.1 + resolve: ^2.0.0-next.5 + semver: ^6.3.1 + string.prototype.matchall: ^4.0.12 + string.prototype.repeat: ^1.0.0 + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 670dcee215f560a394b8b9966aecfc3c5ee5c15603a690f5333b0e16863275958f9c1853b12355eb0e36ef74dfac8bf645e4f440cb9b985a3bae2ac09d5ed55a + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^5.2.0 + checksum: ec97dbf5fb04b94e8f4c5a91a7f0a6dd3c55e46bfc7bbcd0e3138c3a76977570e02ed89a1810c778dcd72072ff0e9621ba1379b4babe53921d71e2e4486fda3e + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 779c604672b570bb4da84cef32f6abb085ac78379779c1122d7879eade8bb38ae715645324597cf23232d03cef06032c9844d25c73625bc282a5bfd30247e5b5 + languageName: node + linkType: hard + +"eslint@npm:^8": + version: 8.57.1 + resolution: "eslint@npm:8.57.1" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.6.1 + "@eslint/eslintrc": ^2.1.4 + "@eslint/js": 8.57.1 + "@humanwhocodes/config-array": ^0.13.0 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + "@ungap/structured-clone": ^1.2.0 + ajv: ^6.12.4 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.2.2 + eslint-visitor-keys: ^3.4.3 + espree: ^9.6.1 + esquery: ^1.4.2 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + graphemer: ^1.4.0 + ignore: ^5.2.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.3 + strip-ansi: ^6.0.1 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: e2489bb7f86dd2011967759a09164e65744ef7688c310bc990612fc26953f34cc391872807486b15c06833bdff737726a23e9b4cdba5de144c311377dc41d91b + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: ^8.9.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.4.1 + checksum: eb8c149c7a2a77b3f33a5af80c10875c3abd65450f60b8af6db1bfcfa8f101e21c1e56a561c6dc13b848e18148d43469e7cd208506238554fb5395a9ea5a1ab9 + languageName: node + linkType: hard + +"esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: b45bc805a613dbea2835278c306b91aff6173c8d034223fa81498c77dcbce3b2931bf6006db816f62eacd9fd4ea975dfd85a5b7f3c6402cfd050d4ca3c13a628 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: ^5.1.0 + checksum: 08ec4fe446d9ab27186da274d979558557fbdbbd10968fa9758552482720c54152a5640e08b9009e5a30706b66aba510692054d4129d32d0e12e05bbc0b96fb2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: ^5.2.0 + checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b + languageName: node + linkType: hard + +"estree-util-attach-comments@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-attach-comments@npm:3.0.0" + dependencies: + "@types/estree": ^1.0.0 + checksum: 56254eaef39659e6351919ebc2ae53a37a09290a14571c19e373e9d5fad343a3403d9ad0c23ae465d6e7d08c3e572fd56fb8c793efe6434a261bf1489932dbd5 + languageName: node + linkType: hard + +"estree-util-build-jsx@npm:^3.0.0": + version: 3.0.1 + resolution: "estree-util-build-jsx@npm:3.0.1" + dependencies: + "@types/estree-jsx": ^1.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + estree-walker: ^3.0.0 + checksum: 185eff060eda2ba32cecd15904db4f5ba0681159fbdf54f0f6586cd9411e77e733861a833d0aee3415e1d1fd4b17edf08bc9e9872cee98e6ec7b0800e1a85064 + languageName: node + linkType: hard + +"estree-util-is-identifier-name@npm:^3.0.0": + version: 3.0.0 + resolution: "estree-util-is-identifier-name@npm:3.0.0" + checksum: ea3909f0188ea164af0aadeca87c087e3e5da78d76da5ae9c7954ff1340ea3e4679c4653bbf4299ffb70caa9b322218cc1128db2541f3d2976eb9704f9857787 + languageName: node + linkType: hard + +"estree-util-scope@npm:^1.0.0": + version: 1.0.0 + resolution: "estree-util-scope@npm:1.0.0" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + checksum: df2ed1b4c078002d50f7e330980e7b6f2630a1f551102203ee5000b61ed8ce5720fe7b9bc1a238a5fded5cf0f157dbe516ad6807323f037b3bb594bd1a0d61bb + languageName: node + linkType: hard + +"estree-util-to-js@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-to-js@npm:2.0.0" + dependencies: + "@types/estree-jsx": ^1.0.0 + astring: ^1.8.0 + source-map: ^0.7.0 + checksum: 833edc94ab9978e0918f90261e0a3361bf4564fec4901f326d2237a9235d3f5fc6482da3be5acc545e702c8c7cb8bc5de5c7c71ba3b080eb1975bcfdf3923d79 + languageName: node + linkType: hard + +"estree-util-visit@npm:^2.0.0": + version: 2.0.0 + resolution: "estree-util-visit@npm:2.0.0" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/unist": ^3.0.0 + checksum: 6444b38f224322945a6d19ea81a8828a0eec64aefb2bf1ea791fe20df496f7b7c543408d637df899e6a8e318b638f66226f16378a33c4c2b192ba5c3f891121f + languageName: node + linkType: hard + +"estree-walker@npm:^3.0.0": + version: 3.0.3 + resolution: "estree-walker@npm:3.0.3" + dependencies: + "@types/estree": ^1.0.0 + checksum: a65728d5727b71de172c5df323385755a16c0fdab8234dc756c3854cfee343261ddfbb72a809a5660fac8c75d960bb3e21aa898c2d7e9b19bb298482ca58a3af + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 + languageName: node + linkType: hard + +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + languageName: node + linkType: hard + +"fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + 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.8 + checksum: 0704d7b85c0305fd2cef37777337dfa26230fdd072dce9fb5c82a4b03156f3ffb8ed3e636033e65d45d2a5805a4e475825369a27404c0307f2db0c8eb3366fbd + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.18.0 + resolution: "fastq@npm:1.18.0" + dependencies: + reusify: ^1.0.4 + checksum: fb8d94318c2e5545a1913c1647b35e8b7825caaba888a98ef9887085e57f5a82104aefbb05f26c81d4e220f02b2ea6f2c999132186d8c77e6c681d91870191ba + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: ^3.0.4 + checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: b4abfbca3839a3d55e4ae5ec62e131e2e356bf4859ce8480c64c4876100f4df292a63e5bb1618e1d7460282ca2b305653064f01654474aa35c68000980f17798 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: ^6.0.0 + path-exists: ^4.0.0 + checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: ^3.2.9 + keyv: ^4.5.3 + rimraf: ^3.0.2 + checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.2 + resolution: "flatted@npm:3.3.2" + checksum: ac3c159742e01d0e860a861164bcfd35bb567ccbebb8a0dd041e61cf3c64a435b917dd1e7ed1c380c2ebca85735fb16644485ec33665bc6aafc3b316aa1eed44 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: ^1.1.3 + checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: ^7.0.0 + signal-exit: ^4.0.1 + checksum: 1989698488f725b05b26bc9afc8a08f08ec41807cd7b92ad85d96004ddf8243fd3e79486b8348c64a3011ae5cc2c9f0936af989e1f28339805d8bc178a75b451 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.3 + define-properties: ^1.2.1 + functions-have-names: ^1.2.3 + hasown: ^2.0.2 + is-callable: ^1.2.7 + checksum: 3a366535dc08b25f40a322efefa83b2da3cd0f6da41db7775f2339679120ef63b6c7e967266182609e655b8f0a8f65596ed21c7fd72ad8bd5621c2340edd4010 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7": + version: 1.2.7 + resolution: "get-intrinsic@npm:1.2.7" + dependencies: + call-bind-apply-helpers: ^1.0.1 + es-define-property: ^1.0.1 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + function-bind: ^1.1.2 + get-proto: ^1.0.0 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + math-intrinsics: ^1.1.0 + checksum: a1597b3b432074f805b6a0ba1182130dd6517c0ea0c4eecc4b8834c803913e1ea62dfc412865be795b3dacb1555a21775b70cf9af7a18b1454ff3414e5442d4a + languageName: node + linkType: hard + +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: ^1.0.1 + es-object-atoms: ^1.0.0 + checksum: 4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: ^1.0.3 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + checksum: 655ed04db48ee65ef2ddbe096540d4405e79ba0a7f54225775fef43a7e2afcb93a77d141c5f05fdef0afce2eb93bcbfb3597142189d562ac167ff183582683cd + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.7.5": + version: 4.8.1 + resolution: "get-tsconfig@npm:4.8.1" + dependencies: + resolve-pkg-maps: ^1.0.0 + checksum: 12df01672e691d2ff6db8cf7fed1ddfef90ed94a5f3d822c63c147a26742026d582acd86afcd6f65db67d809625d17dd7f9d34f4d3f38f69bc2f48e19b2bdd5b + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: ^4.0.1 + checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: ^4.0.3 + checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + languageName: node + linkType: hard + +"glob@npm:10.3.10": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.3.5 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 + bin: + glob: dist/esm/bin.mjs + checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 + languageName: node + linkType: hard + +"glob@npm:^7.1.3": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + 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 + checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: ^0.20.2 + checksum: 56066ef058f6867c04ff203b8a44c15b038346a62efbc3060052a1016be9f56f4cf0b2cd45b74b22b81e521a889fc7786c73691b0549c2f3a6e825b3d394f43c + languageName: node + linkType: hard + +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: ^1.2.1 + gopd: ^1.0.1 + checksum: 39ad667ad9f01476474633a1834a70842041f70a55571e8dcef5fb957980a92da5022db5430fca8aecc5d47704ae30618c0bc877a579c70710c904e9ef06108a + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 79730518ae02c77e4af6a1d1a0b6a2c3e1509785532771f9baf0241e83e36329542c3d7a0e723df8cbc85f74eff4f177828a2265a01ba576adbdc2d40d86538b + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: ^1.0.0 + checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3 + languageName: node + linkType: hard + +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: ^1.0.0 + checksum: f55010cb94caa56308041d77967c72a02ffd71386b23f9afa8447e58bc92d49d15c19bf75173713468e92fe3fb1680b03b115da39c21c32c74886d1d50d3e7ff + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: ^1.0.3 + checksum: 999d60bb753ad714356b2c6c87b7fb74f32463b8426e159397da4bde5bca7e598ab1073f4d8d4deafac297f2eb311484cd177af242776bf05f0d11565680468d + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: ^1.1.2 + checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db + languageName: node + linkType: hard + +"hast-util-to-estree@npm:^3.0.0": + version: 3.1.1 + resolution: "hast-util-to-estree@npm:3.1.1" + dependencies: + "@types/estree": ^1.0.0 + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + comma-separated-tokens: ^2.0.0 + devlop: ^1.0.0 + estree-util-attach-comments: ^3.0.0 + estree-util-is-identifier-name: ^3.0.0 + hast-util-whitespace: ^3.0.0 + 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 + space-separated-tokens: ^2.0.0 + style-to-object: ^1.0.0 + unist-util-position: ^5.0.0 + zwitch: ^2.0.0 + checksum: e23eec63b6a0a15b9053a1dd7e8fef767202335ed009c66d82b4ea1226ed9e7f45c6dd4f255810aec470aba8b5cd5ba77f8f914e808f2d3cde4341dd297f911f + languageName: node + linkType: hard + +"hast-util-to-html@npm:^9.0.4": + version: 9.0.4 + resolution: "hast-util-to-html@npm:9.0.4" + dependencies: + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 + ccount: ^2.0.0 + comma-separated-tokens: ^2.0.0 + hast-util-whitespace: ^3.0.0 + html-void-elements: ^3.0.0 + mdast-util-to-hast: ^13.0.0 + property-information: ^6.0.0 + space-separated-tokens: ^2.0.0 + stringify-entities: ^4.0.0 + zwitch: ^2.0.4 + checksum: 6b97f641bca4c1de66bd74dd5a965bc5fd5c4b8e09328448c4952226ebd691c107cc990ce4e29ccb1e6bfff0278d8956fc8159533456c167f94ae067b4b42b11 + languageName: node + linkType: hard + +"hast-util-to-jsx-runtime@npm:^2.0.0": + version: 2.3.2 + resolution: "hast-util-to-jsx-runtime@npm:2.3.2" + dependencies: + "@types/estree": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/unist": ^3.0.0 + comma-separated-tokens: ^2.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + hast-util-whitespace: ^3.0.0 + 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 + space-separated-tokens: ^2.0.0 + style-to-object: ^1.0.0 + unist-util-position: ^5.0.0 + vfile-message: ^4.0.0 + checksum: 223cc3e2ea622d14529e2aa070bd88f6ca7255084bd5e6e28015dad435cda22b1ddd98064bba6a4753d546d882dcd3f8067af1ea27c253986f6f303869544075 + languageName: node + linkType: hard + +"hast-util-whitespace@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-whitespace@npm:3.0.0" + dependencies: + "@types/hast": ^3.0.0 + checksum: 41d93ccce218ba935dc3c12acdf586193c35069489c8c8f50c2aa824c00dec94a3c78b03d1db40fa75381942a189161922e4b7bca700b3a2cc779634c351a1e4 + languageName: node + linkType: hard + +"html-void-elements@npm:^3.0.0": + version: 3.0.0 + resolution: "html-void-elements@npm:3.0.0" + checksum: 59be397525465a7489028afa064c55763d9cccd1d7d9f630cca47137317f0e897a9ca26cef7e745e7cff1abc44260cfa407742b243a54261dfacd42230e94fce + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: ^1.0.0 + resolve-from: ^4.0.0 + checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + languageName: node + linkType: hard + +"inline-style-parser@npm:0.2.4": + version: 0.2.4 + resolution: "inline-style-parser@npm:0.2.4" + checksum: 5df20a21dd8d67104faaae29774bb50dc9690c75bc5c45dac107559670a5530104ead72c4cf54f390026e617e7014c65b3d68fb0bb573a37c4d1f94e9c36e1ca + languageName: node + linkType: hard + +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: ^1.3.0 + hasown: ^2.0.2 + side-channel: ^1.1.0 + checksum: 8e0991c2d048cc08dab0a91f573c99f6a4215075887517ea4fa32203ce8aea60fa03f95b177977fa27eb502e5168366d0f3e02c762b799691411d49900611861 + languageName: node + linkType: hard + +"is-alphabetical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphabetical@npm:2.0.1" + checksum: 56207db8d9de0850f0cd30f4966bf731eb82cedfe496cbc2e97e7c3bacaf66fc54a972d2d08c0d93bb679cb84976a05d24c5ad63de56fabbfc60aadae312edaa + languageName: node + linkType: hard + +"is-alphanumerical@npm:^2.0.0": + version: 2.0.1 + resolution: "is-alphanumerical@npm:2.0.1" + dependencies: + is-alphabetical: ^2.0.0 + is-decimal: ^2.0.0 + checksum: 87acc068008d4c9c4e9f5bd5e251041d42e7a50995c77b1499cf6ed248f971aadeddb11f239cabf09f7975ee58cac7a48ffc170b7890076d8d227b24a68663c9 + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4": + version: 1.2.0 + resolution: "is-arguments@npm:1.2.0" + dependencies: + call-bound: ^1.0.2 + has-tostringtag: ^1.0.2 + checksum: aae9307fedfe2e5be14aebd0f48a9eeedf6b8c8f5a0b66257b965146d1e94abdc3f08e3dce3b1d908e1fa23c70039a88810ee1d753905758b9b6eebbab0bafeb + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.3 + get-intrinsic: ^1.2.6 + checksum: f137a2a6e77af682cdbffef1e633c140cf596f72321baf8bba0f4ef22685eb4339dde23dfe9e9ca430b5f961dee4d46577dcf12b792b68518c8449b134fb9156 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.1.0 + resolution: "is-async-function@npm:2.1.0" + dependencies: + call-bound: ^1.0.3 + get-proto: ^1.0.1 + has-tostringtag: ^1.0.2 + safe-regex-test: ^1.1.0 + checksum: e8dfa81561eb7cd845d626bf49675c735a177013943eb6919185e1f358fe8b16fd11fa477397df8ddddd31ade47092de8243997530931a4ec17cb2b9d15479c9 + languageName: node + linkType: hard + +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: ^1.0.2 + checksum: ee1544f0e664f253306786ed1dce494b8cf242ef415d6375d8545b4d8816b0f054bd9f948a8988ae2c6325d1c28260dd02978236b2f7b8fb70dfc4838a6c9fa7 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.2.1": + version: 1.2.1 + resolution: "is-boolean-object@npm:1.2.1" + dependencies: + call-bound: ^1.0.2 + has-tostringtag: ^1.0.2 + checksum: 2672609f0f2536172873810a38ec006a415e43ddc6a240f7638a1659cb20dfa91cc75c8a1bed36247bb046aa8f0eab945f20d1203bc69606418bd129c745f861 + languageName: node + linkType: hard + +"is-bun-module@npm:^1.0.2": + version: 1.3.0 + resolution: "is-bun-module@npm:1.3.0" + dependencies: + semver: ^7.6.3 + checksum: b23d9ec7b4d4bfd89e4e72b5cd52e1bc153facad59fdd7394c656f8859a78740ef35996a2066240a32f39cc9a9da4b4eb69e68df3c71755a61ebbaf56d3daef0 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: ^2.0.2 + checksum: 6ec5b3c42d9cbf1ac23f164b16b8a140c3cec338bf8f884c076ca89950c7cc04c33e78f02b8cae7ff4751f3247e3174b2330f1fe4de194c7210deb8b1ea316a7 + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" + dependencies: + call-bound: ^1.0.2 + get-intrinsic: ^1.2.6 + is-typed-array: ^1.1.13 + checksum: 31600dd19932eae7fd304567e465709ffbfa17fa236427c9c864148e1b54eb2146357fcf3aed9b686dee13c217e1bb5a649cb3b9c479e1004c0648e9febde1b2 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" + dependencies: + call-bound: ^1.0.2 + has-tostringtag: ^1.0.2 + checksum: d6c36ab9d20971d65f3fc64cef940d57a4900a2ac85fb488a46d164c2072a33da1cb51eefcc039e3e5c208acbce343d3480b84ab5ff0983f617512da2742562a + languageName: node + linkType: hard + +"is-decimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-decimal@npm:2.0.1" + checksum: 97132de7acdce77caa7b797632970a2ecd649a88e715db0e4dbc00ab0708b5e7574ba5903962c860cd4894a14fd12b100c0c4ac8aed445cf6f55c6cf747a4158 + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 3fef7ddbf0be25958e8991ad941901bf5922ab2753c46980b60b05c1bf9c9c2402d35e6dc32e4380b980ef5e1970a5d9d5e5aa2e02d77727c3b6b5e918474c56 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" + dependencies: + call-bound: ^1.0.3 + checksum: 38c646c506e64ead41a36c182d91639833311970b6b6c6268634f109eef0a1a9d2f1f2e499ef4cb43c744a13443c4cdd2f0812d5afdcee5e9b65b72b28c48557 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" + dependencies: + call-bound: ^1.0.3 + get-proto: ^1.0.0 + has-tostringtag: ^1.0.2 + safe-regex-test: ^1.1.0 + checksum: f7f7276131bdf7e28169b86ac55a5b080012a597f9d85a0cbef6fe202a7133fa450a3b453e394870e3cb3685c5a764c64a9f12f614684b46969b1e6f297bed6b + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: ^2.1.1 + checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + languageName: node + linkType: hard + +"is-hexadecimal@npm:^2.0.0": + version: 2.0.1 + resolution: "is-hexadecimal@npm:2.0.1" + checksum: 66a2ea85994c622858f063f23eda506db29d92b52580709eb6f4c19550552d4dcf3fb81952e52f7cf972097237959e00adc7bb8c9400cd12886e15bf06145321 + languageName: node + linkType: hard + +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc + languageName: node + linkType: hard + +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: ^1.0.3 + has-tostringtag: ^1.0.2 + checksum: 6517f0a0e8c4b197a21afb45cd3053dc711e79d45d8878aa3565de38d0102b130ca8732485122c7b336e98c27dacd5236854e3e6526e0eb30cae64956535662f + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 + languageName: node + linkType: hard + +"is-plain-obj@npm:^4.0.0": + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce + languageName: node + linkType: hard + +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: ^1.0.2 + gopd: ^1.2.0 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 99ee0b6d30ef1bb61fa4b22fae7056c6c9b3c693803c0c284ff7a8570f83075a7d38cda53b06b7996d441215c27895ea5d1af62124562e13d91b3dbec41a5e13 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: ^1.0.3 + checksum: 1611fedc175796eebb88f4dfc393dd969a4a8e6c69cadaff424ee9d4464f9f026399a5f84a90f7c62d6d7ee04e3626a912149726de102b0bd6c1ee6a9868fa5a + languageName: node + linkType: hard + +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" + dependencies: + call-bound: ^1.0.3 + has-tostringtag: ^1.0.2 + checksum: 2eeaaff605250f5e836ea3500d33d1a5d3aa98d008641d9d42fb941e929ffd25972326c2ef912987e54c95b6f10416281aaf1b35cdf81992cfb7524c5de8e193 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" + dependencies: + call-bound: ^1.0.2 + has-symbols: ^1.1.0 + safe-regex-test: ^1.1.0 + checksum: bfafacf037af6f3c9d68820b74be4ae8a736a658a3344072df9642a090016e281797ba8edbeb1c83425879aae55d1cb1f30b38bf132d703692b2570367358032 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15, is-typed-array@npm:^1.1.3": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: ^1.1.16 + checksum: ea7cfc46c282f805d19a9ab2084fd4542fed99219ee9dbfbc26284728bd713a51eac66daa74eca00ae0a43b61322920ba334793607dc39907465913e921e0892 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": + version: 1.1.0 + resolution: "is-weakref@npm:1.1.0" + dependencies: + call-bound: ^1.0.2 + checksum: 2a2f3a1746ee1baecf9ac6483d903cd3f8ef3cca88e2baa42f2e85ea064bd246d218eed5f6d479fc1c76dae2231e71133b6b86160e821d176932be9fae3da4da + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: ^1.0.3 + get-intrinsic: ^1.2.6 + checksum: 5c6c8415a06065d78bdd5e3a771483aa1cd928df19138aa73c4c51333226f203f22117b4325df55cc8b3085a6716870a320c2d757efee92d7a7091a039082041 + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: 20849846ae414997d290b75e16868e5261e86ff5047f104027026fd61d8b5a9b0b3ade16239f35e1a067b3c7cc02f70183cb661010ed16f4b6c7c93dad1b19d8 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.4": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" + dependencies: + define-data-property: ^1.1.4 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.6 + get-proto: ^1.0.0 + has-symbols: ^1.1.0 + set-function-name: ^2.0.2 + checksum: 7db23c42629ba4790e6e15f78b555f41dbd08818c85af306988364bd19d86716a1187cb333444f3a0036bfc078a0e9cb7ec67fef3a61662736d16410d7f77869 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: ^2.0.1 + bin: + js-yaml: bin/js-yaml.js + checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + languageName: node + linkType: hard + +"jsdoc-type-pratt-parser@npm:^4.0.0": + version: 4.1.0 + resolution: "jsdoc-type-pratt-parser@npm:4.1.0" + checksum: e7642a508b090b1bdf17775383000ed71013c38e1231c1e576e5374636e8baf7c3fae8bf0252f5e1d3397d95efd56e8c8a5dd1a0de76d05d1499cbcb3c325bc3 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 + languageName: node + linkType: hard + +"json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: ^1.2.0 + bin: + json5: lib/cli.js + checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: ^3.1.6 + array.prototype.flat: ^1.3.1 + object.assign: ^4.1.4 + object.values: ^1.1.6 + checksum: f4b05fa4d7b5234230c905cfa88d36dc8a58a6666975a3891429b1a8cdc8a140bca76c297225cb7a499fad25a2c052ac93934449a2c31a44fc9edd06c773780a + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: 3.0.1 + checksum: 74a24395b1c34bd44ad5cb2b49140d087553e170625240b86755a6604cd65aa16efdbdeae5cdb17ba1284a0fbb25ad06263755dbc71b8d8b06f74232ce3cdd72 + languageName: node + linkType: hard + +"language-subtag-registry@npm:^0.3.20": + version: 0.3.23 + resolution: "language-subtag-registry@npm:0.3.23" + checksum: 0b64c1a6c5431c8df648a6d25594ff280613c886f4a1a542d9b864e5472fb93e5c7856b9c41595c38fac31370328fc79fcc521712e89ea6d6866cbb8e0995d81 + languageName: node + linkType: hard + +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: ^0.3.20 + checksum: 57c530796dc7179914dee71bc94f3747fd694612480241d0453a063777265dfe3a951037f7acb48f456bf167d6eb419d4c00263745326b3ba1cdcf4657070e78 + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: ^1.2.1 + type-check: ~0.4.0 + checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 + languageName: node + linkType: hard + +"lightningcss-darwin-arm64@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-darwin-arm64@npm:1.28.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-darwin-x64@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-darwin-x64@npm:1.28.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-freebsd-x64@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-freebsd-x64@npm:1.28.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"lightningcss-linux-arm-gnueabihf@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-linux-arm-gnueabihf@npm:1.28.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"lightningcss-linux-arm64-gnu@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-linux-arm64-gnu@npm:1.28.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-arm64-musl@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-linux-arm64-musl@npm:1.28.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-linux-x64-gnu@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-linux-x64-gnu@npm:1.28.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"lightningcss-linux-x64-musl@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-linux-x64-musl@npm:1.28.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"lightningcss-win32-arm64-msvc@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-win32-arm64-msvc@npm:1.28.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"lightningcss-win32-x64-msvc@npm:1.28.2": + version: 1.28.2 + resolution: "lightningcss-win32-x64-msvc@npm:1.28.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"lightningcss@npm:^1.28.2": + version: 1.28.2 + resolution: "lightningcss@npm:1.28.2" + dependencies: + detect-libc: ^1.0.3 + lightningcss-darwin-arm64: 1.28.2 + lightningcss-darwin-x64: 1.28.2 + lightningcss-freebsd-x64: 1.28.2 + lightningcss-linux-arm-gnueabihf: 1.28.2 + lightningcss-linux-arm64-gnu: 1.28.2 + lightningcss-linux-arm64-musl: 1.28.2 + lightningcss-linux-x64-gnu: 1.28.2 + lightningcss-linux-x64-musl: 1.28.2 + lightningcss-win32-arm64-msvc: 1.28.2 + lightningcss-win32-x64-msvc: 1.28.2 + dependenciesMeta: + lightningcss-darwin-arm64: + optional: true + lightningcss-darwin-x64: + optional: true + lightningcss-freebsd-x64: + optional: true + lightningcss-linux-arm-gnueabihf: + optional: true + lightningcss-linux-arm64-gnu: + optional: true + lightningcss-linux-arm64-musl: + optional: true + lightningcss-linux-x64-gnu: + optional: true + lightningcss-linux-x64-musl: + optional: true + lightningcss-win32-arm64-msvc: + optional: true + lightningcss-win32-x64-msvc: + optional: true + checksum: 6860b65b4352c2bcc3b81bf4950ad754ec431bac89fe44e608325976a096f98985b998a8dda6dc924abb87d0e946e4a8051514ca562d1e453c737184edda4702 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: ^5.0.0 + checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 + languageName: node + linkType: hard + +"lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + languageName: node + linkType: hard + +"longest-streak@npm:^3.0.0": + version: 3.1.0 + resolution: "longest-streak@npm:3.1.0" + checksum: d7f952ed004cbdb5c8bcfc4f7f5c3d65449e6c5a9e9be4505a656e3df5a57ee125f284286b4bf8ecea0c21a7b3bf2b8f9001ad506c319b9815ad6a63a47d0fd0 + languageName: node + linkType: hard + +"loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: ^3.0.0 || ^4.0.0 + bin: + loose-envify: cli.js + checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 + languageName: node + linkType: hard + +"lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a + languageName: node + linkType: hard + +"markdown-extensions@npm:^2.0.0": + version: 2.0.0 + resolution: "markdown-extensions@npm:2.0.0" + checksum: ec4ffcb0768f112e778e7ac74cb8ef22a966c168c3e6c29829f007f015b0a0b5c79c73ee8599a0c72e440e7f5cfdbf19e80e2d77b9a313b8f66e180a330cf1b2 + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 0e513b29d120f478c85a70f49da0b8b19bc638975eca466f2eeae0071f3ad00454c621bf66e16dd435896c208e719fc91ad79bbfba4e400fe0b372e7c1c9c9a2 + languageName: node + linkType: hard + +"mdast-util-from-markdown@npm:^2.0.0": + version: 2.0.2 + resolution: "mdast-util-from-markdown@npm:2.0.2" + dependencies: + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + decode-named-character-reference: ^1.0.0 + devlop: ^1.0.0 + mdast-util-to-string: ^4.0.0 + micromark: ^4.0.0 + micromark-util-decode-numeric-character-reference: ^2.0.0 + micromark-util-decode-string: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-stringify-position: ^4.0.0 + checksum: 1ad19f48b30ac6e0cb756070c210c78ad93c26876edfb3f75127783bc6df8b9402016d8f3e9964f3d1d5430503138ec65c145e869438727e1aa7f3cebf228fba + languageName: node + linkType: hard + +"mdast-util-mdx-expression@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdx-expression@npm:2.0.1" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 6af56b06bde3ab971129db9855dcf0d31806c70b3b052d7a90a5499a366b57ffd0c2efca67d281c448c557298ba7e3e61bd07133733b735440840dd339b28e19 + languageName: node + linkType: hard + +"mdast-util-mdx-jsx@npm:^3.0.0": + version: 3.1.3 + resolution: "mdast-util-mdx-jsx@npm:3.1.3" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + ccount: ^2.0.0 + devlop: ^1.1.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + parse-entities: ^4.0.0 + stringify-entities: ^4.0.0 + unist-util-stringify-position: ^4.0.0 + vfile-message: ^4.0.0 + checksum: 638644420090163fc08d01150e10550a21e914b85dd3a37178d3b949173c5aee2d7fee536f864ac25800e0cebde8357a5808427ffb7e9975a669e4382ae479ab + languageName: node + linkType: hard + +"mdast-util-mdx@npm:^3.0.0": + version: 3.0.0 + resolution: "mdast-util-mdx@npm:3.0.0" + dependencies: + mdast-util-from-markdown: ^2.0.0 + mdast-util-mdx-expression: ^2.0.0 + mdast-util-mdx-jsx: ^3.0.0 + mdast-util-mdxjs-esm: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: e2b007d826fcd49fd57ed03e190753c8b0f7d9eff6c7cb26ba609cde15cd3a472c0cd5e4a1ee3e39a40f14be22fdb57de243e093cea0c064d6f3366cff3e3af2 + languageName: node + linkType: hard + +"mdast-util-mdxjs-esm@npm:^2.0.0": + version: 2.0.1 + resolution: "mdast-util-mdxjs-esm@npm:2.0.1" + dependencies: + "@types/estree-jsx": ^1.0.0 + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + devlop: ^1.0.0 + mdast-util-from-markdown: ^2.0.0 + mdast-util-to-markdown: ^2.0.0 + checksum: 1f9dad04d31d59005332e9157ea9510dc1d03092aadbc607a10475c7eec1c158b475aa0601a3a4f74e13097ca735deb8c2d9d37928ddef25d3029fd7c9e14dc3 + languageName: node + linkType: hard + +"mdast-util-phrasing@npm:^4.0.0": + version: 4.1.0 + resolution: "mdast-util-phrasing@npm:4.1.0" + dependencies: + "@types/mdast": ^4.0.0 + unist-util-is: ^6.0.0 + checksum: 3a97533e8ad104a422f8bebb34b3dde4f17167b8ed3a721cf9263c7416bd3447d2364e6d012a594aada40cac9e949db28a060bb71a982231693609034ed5324e + languageName: node + linkType: hard + +"mdast-util-to-hast@npm:^13.0.0": + version: 13.2.0 + resolution: "mdast-util-to-hast@npm:13.2.0" + dependencies: + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + "@ungap/structured-clone": ^1.0.0 + devlop: ^1.0.0 + micromark-util-sanitize-uri: ^2.0.0 + trim-lines: ^3.0.0 + unist-util-position: ^5.0.0 + unist-util-visit: ^5.0.0 + vfile: ^6.0.0 + checksum: 7e5231ff3d4e35e1421908437577fd5098141f64918ff5cc8a0f7a8a76c5407f7a3ee88d75f7a1f7afb763989c9f357475fa0ba8296c00aaff1e940098fe86a6 + languageName: node + linkType: hard + +"mdast-util-to-markdown@npm:^2.0.0": + version: 2.1.2 + resolution: "mdast-util-to-markdown@npm:2.1.2" + dependencies: + "@types/mdast": ^4.0.0 + "@types/unist": ^3.0.0 + longest-streak: ^3.0.0 + mdast-util-phrasing: ^4.0.0 + mdast-util-to-string: ^4.0.0 + micromark-util-classify-character: ^2.0.0 + micromark-util-decode-string: ^2.0.0 + unist-util-visit: ^5.0.0 + zwitch: ^2.0.0 + checksum: 288d152bd50c00632e6e01c610bb904a220d1e226c8086c40627877959746f83ab0b872f4150cb7d910198953b1bf756e384ac3fee3e7b0ddb4517f9084c5803 + languageName: node + linkType: hard + +"mdast-util-to-string@npm:^4.0.0": + version: 4.0.0 + resolution: "mdast-util-to-string@npm:4.0.0" + dependencies: + "@types/mdast": ^4.0.0 + checksum: 35489fb5710d58cbc2d6c8b6547df161a3f81e0f28f320dfb3548a9393555daf07c310c0c497708e67ed4dfea4a06e5655799e7d631ca91420c288b4525d6c29 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + languageName: node + linkType: hard + +"micromark-core-commonmark@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-core-commonmark@npm:2.0.2" + dependencies: + decode-named-character-reference: ^1.0.0 + devlop: ^1.0.0 + micromark-factory-destination: ^2.0.0 + micromark-factory-label: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-factory-title: ^2.0.0 + micromark-factory-whitespace: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-classify-character: ^2.0.0 + micromark-util-html-tag-name: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-resolve-all: ^2.0.0 + micromark-util-subtokenize: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: e49d78429baf72533a02d06ae83e5a24d4d547bc832173547ffbae93c0960a7dbf0d8896058301498fa4297f280070a5a66891e0e6160040d6c5ef9bc5d9cd51 + languageName: node + linkType: hard + +"micromark-extension-mdx-expression@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdx-expression@npm:3.0.0" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-factory-mdx-expression: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: abd6ba0acdebc03bc0836c51a1ec4ca28e0be86f10420dd8cfbcd6c10dd37cd3f31e7c8b9792e9276e7526748883f4a30d0803d72b6285dae47d4e5348c23a10 + languageName: node + linkType: hard + +"micromark-extension-mdx-jsx@npm:^3.0.0": + version: 3.0.1 + resolution: "micromark-extension-mdx-jsx@npm:3.0.1" + dependencies: + "@types/acorn": ^4.0.0 + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + estree-util-is-identifier-name: ^3.0.0 + micromark-factory-mdx-expression: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + vfile-message: ^4.0.0 + checksum: d1c7e3cb144284b8ab958a7bc67f3e9f8f0de8cb3e4931aa2d46841b318a7e9998f3aa1d5f35e0afc5a57955697a9a2c74a12491e309b139973e91e30089025b + languageName: node + linkType: hard + +"micromark-extension-mdx-md@npm:^2.0.0": + version: 2.0.0 + resolution: "micromark-extension-mdx-md@npm:2.0.0" + dependencies: + micromark-util-types: ^2.0.0 + checksum: 7daf03372fd7faddf3f0ac87bdb0debb0bb770f33b586f72251e1072b222ceee75400ab6194c0e130dbf1e077369a5b627be6e9130d7a2e9e6b849f0d18ff246 + languageName: node + linkType: hard + +"micromark-extension-mdxjs-esm@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs-esm@npm:3.0.0" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-core-commonmark: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-position-from-estree: ^2.0.0 + vfile-message: ^4.0.0 + checksum: fb33d850200afce567b95c90f2f7d42259bd33eea16154349e4fa77c3ec934f46c8e5c111acea16321dce3d9f85aaa4c49afe8b810e31b34effc11617aeee8f6 + languageName: node + linkType: hard + +"micromark-extension-mdxjs@npm:^3.0.0": + version: 3.0.0 + resolution: "micromark-extension-mdxjs@npm:3.0.0" + dependencies: + acorn: ^8.0.0 + acorn-jsx: ^5.0.0 + micromark-extension-mdx-expression: ^3.0.0 + micromark-extension-mdx-jsx: ^3.0.0 + micromark-extension-mdx-md: ^2.0.0 + micromark-extension-mdxjs-esm: ^3.0.0 + micromark-util-combine-extensions: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 7da6f0fb0e1e0270a2f5ad257e7422cc16e68efa7b8214c63c9d55bc264cb872e9ca4ac9a71b9dfd13daf52e010f730bac316086f4340e4fcc6569ec699915bf + languageName: node + linkType: hard + +"micromark-factory-destination@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-destination@npm:2.0.1" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 9c4baa9ca2ed43c061bbf40ddd3d85154c2a0f1f485de9dea41d7dd2ad994ebb02034a003b2c1dbe228ba83a0576d591f0e90e0bf978713f84ee7d7f3aa98320 + languageName: node + linkType: hard + +"micromark-factory-label@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-label@npm:2.0.1" + dependencies: + devlop: ^1.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: bd03f5a75f27cdbf03b894ddc5c4480fc0763061fecf9eb927d6429233c930394f223969a99472df142d570c831236134de3dc23245d23d9f046f9d0b623b5c2 + languageName: node + linkType: hard + +"micromark-factory-mdx-expression@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-factory-mdx-expression@npm:2.0.2" + dependencies: + "@types/estree": ^1.0.0 + devlop: ^1.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-events-to-acorn: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + unist-util-position-from-estree: ^2.0.0 + vfile-message: ^4.0.0 + checksum: fc4bd9cba0f657093537bff02365f528e8a847f2f20d8d62bb6e21cb343f8179974a9289a198164f88a383d45f403bc29c06749ae5af531c4ce1ab2164090439 + languageName: node + linkType: hard + +"micromark-factory-space@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-space@npm:2.0.1" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 1bd68a017c1a66f4787506660c1e1c5019169aac3b1cb075d49ac5e360e0b2065e984d4e1d6e9e52a9d44000f2fa1c98e66a743d7aae78b4b05616bf3242ed71 + languageName: node + linkType: hard + +"micromark-factory-title@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-title@npm:2.0.1" + dependencies: + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: b4d2e4850a8ba0dff25ce54e55a3eb0d43dda88a16293f53953153288f9d84bcdfa8ca4606b2cfbb4f132ea79587bbb478a73092a349f893f5264fbcdbce2ee1 + languageName: node + linkType: hard + +"micromark-factory-whitespace@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-factory-whitespace@npm:2.0.1" + dependencies: + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 67b3944d012a42fee9e10e99178254a04d48af762b54c10a50fcab988688799993efb038daf9f5dbc04001a97b9c1b673fc6f00e6a56997877ab25449f0c8650 + languageName: node + linkType: hard + +"micromark-util-character@npm:^2.0.0": + version: 2.1.1 + resolution: "micromark-util-character@npm:2.1.1" + dependencies: + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: e9e409efe4f2596acd44587e8591b722bfc041c1577e8fe0d9c007a4776fb800f9b3637a22862ad2ba9489f4bdf72bb547fce5767dbbfe0a5e6760e2a21c6495 + languageName: node + linkType: hard + +"micromark-util-chunked@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-chunked@npm:2.0.1" + dependencies: + micromark-util-symbol: ^2.0.0 + checksum: f8cb2a67bcefe4bd2846d838c97b777101f0043b9f1de4f69baf3e26bb1f9885948444e3c3aec66db7595cad8173bd4567a000eb933576c233d54631f6323fe4 + languageName: node + linkType: hard + +"micromark-util-classify-character@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-classify-character@npm:2.0.1" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 4d8bbe3a6dbf69ac0fc43516866b5bab019fe3f4568edc525d4feaaaf78423fa54e6b6732b5bccbeed924455279a3758ffc9556954aafb903982598a95a02704 + languageName: node + linkType: hard + +"micromark-util-combine-extensions@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-combine-extensions@npm:2.0.1" + dependencies: + micromark-util-chunked: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 5d22fb9ee37e8143adfe128a72b50fa09568c2cc553b3c76160486c96dbbb298c5802a177a10a215144a604b381796071b5d35be1f2c2b2ee17995eda92f0c8e + languageName: node + linkType: hard + +"micromark-util-decode-numeric-character-reference@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2" + dependencies: + micromark-util-symbol: ^2.0.0 + checksum: ee11c8bde51e250e302050474c4a2adca094bca05c69f6cdd241af12df285c48c88d19ee6e022b9728281c280be16328904adca994605680c43af56019f4b0b6 + languageName: node + linkType: hard + +"micromark-util-decode-string@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-decode-string@npm:2.0.1" + dependencies: + decode-named-character-reference: ^1.0.0 + micromark-util-character: ^2.0.0 + micromark-util-decode-numeric-character-reference: ^2.0.0 + micromark-util-symbol: ^2.0.0 + checksum: e9546ae53f9b5a4f9aa6aaf3e750087100d3429485ca80dbacec99ff2bb15a406fa7d93784a0fc2fe05ad7296b9295e75160ef71faec9e90110b7be2ae66241a + languageName: node + linkType: hard + +"micromark-util-encode@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-encode@npm:2.0.1" + checksum: be890b98e78dd0cdd953a313f4148c4692cc2fb05533e56fef5f421287d3c08feee38ca679f318e740530791fc251bfe8c80efa926fcceb4419b269c9343d226 + languageName: node + linkType: hard + +"micromark-util-events-to-acorn@npm:^2.0.0": + version: 2.0.2 + resolution: "micromark-util-events-to-acorn@npm:2.0.2" + dependencies: + "@types/acorn": ^4.0.0 + "@types/estree": ^1.0.0 + "@types/unist": ^3.0.0 + devlop: ^1.0.0 + estree-util-visit: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + vfile-message: ^4.0.0 + checksum: bcb3eeac52a4ae5c3ca3d8cff514de3a7d1f272d9a94cce26a08c578bef64df4d61820874c01207e92fcace9eae5c9a7ecdddef0c6e10014b255a07b7880bf94 + languageName: node + linkType: hard + +"micromark-util-html-tag-name@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-html-tag-name@npm:2.0.1" + checksum: dea365f5ad28ad74ff29fcb581f7b74fc1f80271c5141b3b2bc91c454cbb6dfca753f28ae03730d657874fcbd89d0494d0e3965dfdca06d9855f467c576afa9d + languageName: node + linkType: hard + +"micromark-util-normalize-identifier@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-normalize-identifier@npm:2.0.1" + dependencies: + micromark-util-symbol: ^2.0.0 + checksum: 1eb9a289d7da067323df9fdc78bfa90ca3207ad8fd893ca02f3133e973adcb3743b233393d23d95c84ccaf5d220ae7f5a28402a644f135dcd4b8cfa60a7b5f84 + languageName: node + linkType: hard + +"micromark-util-resolve-all@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-resolve-all@npm:2.0.1" + dependencies: + micromark-util-types: ^2.0.0 + checksum: 9275f3ddb6c26f254dd2158e66215d050454b279707a7d9ce5a3cd0eba23201021cedcb78ae1a746c1b23227dcc418ee40dd074ade195359506797a5493550cc + languageName: node + linkType: hard + +"micromark-util-sanitize-uri@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-sanitize-uri@npm:2.0.1" + dependencies: + micromark-util-character: ^2.0.0 + micromark-util-encode: ^2.0.0 + micromark-util-symbol: ^2.0.0 + checksum: d01517840c17de67aaa0b0f03bfe05fac8a41d99723cd8ce16c62f6810e99cd3695364a34c335485018e5e2c00e69031744630a1b85c6868aa2f2ca1b36daa2f + languageName: node + linkType: hard + +"micromark-util-subtokenize@npm:^2.0.0": + version: 2.0.3 + resolution: "micromark-util-subtokenize@npm:2.0.3" + dependencies: + devlop: ^1.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 3e95112b3ae640348e611dd69dc73e03f96a62e6d510d7c801685bd701041a61b5835e119ec84044972f2873b60ba21dbc58082a345d7745f4c19465b6d1b644 + languageName: node + linkType: hard + +"micromark-util-symbol@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-symbol@npm:2.0.1" + checksum: fb7346950550bc85a55793dda94a8b3cb3abc068dbd7570d1162db7aee803411d06c0a5de4ae59cd945f46143bdeadd4bba02a02248fa0d18cc577babaa00044 + languageName: node + linkType: hard + +"micromark-util-types@npm:^2.0.0": + version: 2.0.1 + resolution: "micromark-util-types@npm:2.0.1" + checksum: 630aac466628a360962f478f69421599c53ff8b3080765201b7be3b3a4be7f4c5b73632b9a6dd426b9e06035353c18acccee637d6c43d9b0bf1c31111bbb88a7 + languageName: node + linkType: hard + +"micromark@npm:^4.0.0": + version: 4.0.1 + resolution: "micromark@npm:4.0.1" + dependencies: + "@types/debug": ^4.0.0 + debug: ^4.0.0 + decode-named-character-reference: ^1.0.0 + devlop: ^1.0.0 + micromark-core-commonmark: ^2.0.0 + micromark-factory-space: ^2.0.0 + micromark-util-character: ^2.0.0 + micromark-util-chunked: ^2.0.0 + micromark-util-combine-extensions: ^2.0.0 + micromark-util-decode-numeric-character-reference: ^2.0.0 + micromark-util-encode: ^2.0.0 + micromark-util-normalize-identifier: ^2.0.0 + micromark-util-resolve-all: ^2.0.0 + micromark-util-sanitize-uri: ^2.0.0 + micromark-util-subtokenize: ^2.0.0 + micromark-util-symbol: ^2.0.0 + micromark-util-types: ^2.0.0 + checksum: 83ea084e8bf84442cc70c1207e916df11f0fde0ebd9daf978c895a1466c47a1dd4ed42b21b6e65bcc0d268fcbec24b4b1b28bc59c548940fe690929b8e0e7732 + languageName: node + linkType: hard + +"micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: ^3.0.3 + picomatch: ^2.3.1 + checksum: 79920eb634e6f400b464a954fcfa589c4e7c7143209488e44baf627f9affc8b1e306f41f4f0deedde97e69cb725920879462d3e750ab3bd3c1aed675bb3a8966 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: ^1.1.7 + checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + languageName: node + linkType: hard + +"minimatch@npm:^9.0.1, minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: ^2.0.1 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 + languageName: node + linkType: hard + +"ms@npm:^2.1.1, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + languageName: node + linkType: hard + +"nanoid@npm:^3.3.6": + version: 3.3.8 + resolution: "nanoid@npm:3.3.8" + bin: + nanoid: bin/nanoid.cjs + checksum: dfe0adbc0c77e9655b550c333075f51bb28cfc7568afbf3237249904f9c86c9aaaed1f113f0fddddba75673ee31c758c30c43d4414f014a52a7a626efc5958c9 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d + languageName: node + linkType: hard + +"next@npm:14.2.23": + version: 14.2.23 + resolution: "next@npm:14.2.23" + dependencies: + "@next/env": 14.2.23 + "@next/swc-darwin-arm64": 14.2.23 + "@next/swc-darwin-x64": 14.2.23 + "@next/swc-linux-arm64-gnu": 14.2.23 + "@next/swc-linux-arm64-musl": 14.2.23 + "@next/swc-linux-x64-gnu": 14.2.23 + "@next/swc-linux-x64-musl": 14.2.23 + "@next/swc-win32-arm64-msvc": 14.2.23 + "@next/swc-win32-ia32-msvc": 14.2.23 + "@next/swc-win32-x64-msvc": 14.2.23 + "@swc/helpers": 0.5.5 + busboy: 1.6.0 + caniuse-lite: ^1.0.30001579 + graceful-fs: ^4.2.11 + postcss: 8.4.31 + styled-jsx: 5.1.1 + peerDependencies: + "@opentelemetry/api": ^1.1.0 + "@playwright/test": ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + dependenciesMeta: + "@next/swc-darwin-arm64": + optional: true + "@next/swc-darwin-x64": + optional: true + "@next/swc-linux-arm64-gnu": + optional: true + "@next/swc-linux-arm64-musl": + optional: true + "@next/swc-linux-x64-gnu": + optional: true + "@next/swc-linux-x64-musl": + optional: true + "@next/swc-win32-arm64-msvc": + optional: true + "@next/swc-win32-ia32-msvc": + optional: true + "@next/swc-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + "@playwright/test": + optional: true + sass: + optional: true + bin: + next: dist/bin/next + checksum: 4f9f744439fb860ba7c64ae1c61bc361bdd36e41d56760c52eabb404f4143c854b78ba9a79b7aefc322d93edbbd66d966cbdaf86772a88a8bf2e6b289987f14f + languageName: node + linkType: hard + +"object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.3": + version: 1.13.3 + resolution: "object-inspect@npm:1.13.3" + checksum: 8c962102117241e18ea403b84d2521f78291b774b03a29ee80a9863621d88265ffd11d0d7e435c4c2cea0dc2a2fbf8bbc92255737a05536590f2df2e8756f297 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.3 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + has-symbols: ^1.1.0 + object-keys: ^1.1.1 + checksum: 60e07d2651cf4f5528c485f1aa4dbded9b384c47d80e8187cefd11320abb1aebebf78df5483451dfa549059f8281c21f7b4bf7d19e9e5e97d8d617df0df298de + languageName: node + linkType: hard + +"object.entries@npm:^1.1.8": + version: 1.1.8 + resolution: "object.entries@npm:1.1.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: 5314877cb637ef3437a30bba61d9bacdb3ce74bf73ac101518be0633c37840c8cc67407edb341f766e8093b3d7516d5c3358f25adfee4a2c697c0ec4c8491907 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.8": + version: 2.0.8 + resolution: "object.fromentries@npm:2.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + es-object-atoms: ^1.0.0 + checksum: 29b2207a2db2782d7ced83f93b3ff5d425f901945f3665ffda1821e30a7253cd1fd6b891a64279976098137ddfa883d748787a6fea53ecdb51f8df8b8cec0ae1 + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.2 + checksum: 0d30693ca3ace29720bffd20b3130451dca7a56c612e1926c0a1a15e4306061d84410bdb1456be2656c5aca53c81b7a3661eceaa362db1bba6669c2c9b6d1982 + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.2.0, object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.3 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: f9b9a2a125ccf8ded29414d7c056ae0d187b833ee74919821fc60d7e216626db220d9cb3cf33f965c84aaaa96133626ca13b80f3c158b673976dc8cfcfcd26bb + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + languageName: node + linkType: hard + +"oniguruma-to-es@npm:0.10.0": + version: 0.10.0 + resolution: "oniguruma-to-es@npm:0.10.0" + dependencies: + emoji-regex-xs: ^1.0.0 + regex: ^5.1.1 + regex-recursion: ^5.1.1 + checksum: 20c4e7b435e7b561c19ae645f1141490bbe616e593fa4844931b92b23b7c5aabdf45f77f4e40c9a4a08aa12e4ed26561f7ead0383c3b23cbb1a0ec414dec7459 + languageName: node + linkType: hard + +"open@npm:^8.0.4": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: ^2.0.0 + is-docker: ^2.1.1 + is-wsl: ^2.2.0 + checksum: 6388bfff21b40cb9bd8f913f9130d107f2ed4724ea81a8fd29798ee322b361ca31fa2cdfb491a5c31e43a3996cfe9566741238c7a741ada8d7af1cb78d85cf26 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: ^0.1.3 + fast-levenshtein: ^2.0.6 + levn: ^0.4.1 + prelude-ls: ^1.2.1 + type-check: ^0.4.0 + word-wrap: ^1.2.5 + checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb + languageName: node + linkType: hard + +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: ^1.2.6 + object-keys: ^1.1.1 + safe-push-apply: ^1.0.0 + checksum: cc9dd7d85c4ccfbe8109fce307d581ac7ede7b26de892b537873fbce2dc6a206d89aea0630dbb98e47ce0873517cefeaa7be15fcf94aaf4764a3b34b474a5b61 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: ^0.1.0 + checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: ^3.0.2 + checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: ^3.0.0 + checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + languageName: node + linkType: hard + +"parse-entities@npm:^4.0.0": + version: 4.0.2 + resolution: "parse-entities@npm:4.0.2" + dependencies: + "@types/unist": ^2.0.0 + character-entities-legacy: ^3.0.0 + character-reference-invalid: ^2.0.0 + decode-named-character-reference: ^1.0.0 + is-alphanumerical: ^2.0.0 + is-decimal: ^2.0.0 + is-hexadecimal: ^2.0.0 + checksum: db22b46da1a62af00409c929ac49fbd306b5ebf0dbacf4646d2ae2b58616ef90a40eedc282568a3cf740fac2a7928bc97146973a628f6977ca274dedc2ad6edc + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: ^10.2.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 + languageName: node + linkType: hard + +"picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: b32d403ece71e042385cc7856385cecf1cd8e144fa74d2f1de40d1e16035dba097bc189715925e79b67bdd1472796ff168d3a90d296356c9c94d272d5b95f3ae + languageName: node + linkType: hard + +"postcss@npm:8.4.31": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" + dependencies: + nanoid: ^3.3.6 + picocolors: ^1.0.0 + source-map-js: ^1.0.2 + checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 + languageName: node + linkType: hard + +"prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: ^1.4.0 + object-assign: ^4.1.1 + react-is: ^16.13.1 + checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 + languageName: node + linkType: hard + +"property-information@npm:^6.0.0": + version: 6.5.0 + resolution: "property-information@npm:6.5.0" + checksum: 6e55664e2f64083b715011e5bafaa1e694faf36986c235b0907e95d09259cc37c38382e3cc94a4c3f56366e05336443db12c8a0f0968a8c0a1b1416eebfc8f53 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + languageName: node + linkType: hard + +"react-dom@npm:^18": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" + dependencies: + loose-envify: ^1.1.0 + scheduler: ^0.23.2 + peerDependencies: + react: ^18.3.1 + checksum: 298954ecd8f78288dcaece05e88b570014d8f6dce5db6f66e6ee91448debeb59dcd31561dddb354eee47e6c1bb234669459060deb238ed0213497146e555a0b9 + languageName: node + linkType: hard + +"react-frame-component@npm:^5.2.7": + version: 5.2.7 + resolution: "react-frame-component@npm:5.2.7" + peerDependencies: + prop-types: ^15.5.9 + react: ">= 16.3" + react-dom: ">= 16.3" + checksum: e28975cf8ca1e730f66f1fc9e4d4248f33970088b95737d6a271ba8650bc35c1bbf97537685c8ab9a32af0fd89c52777e03de848b8cc3c9e8842506ddc3f65d9 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f + languageName: node + linkType: hard + +"react@npm:^18": + version: 18.3.1 + resolution: "react@npm:18.3.1" + dependencies: + loose-envify: ^1.1.0 + checksum: a27bcfa8ff7c15a1e50244ad0d0c1cb2ad4375eeffefd266a64889beea6f6b64c4966c9b37d14ee32d6c9fcd5aa6ba183b6988167ab4d127d13e7cb5b386a376 + languageName: node + linkType: hard + +"recast@npm:^0.23.5": + version: 0.23.9 + resolution: "recast@npm:0.23.9" + dependencies: + ast-types: ^0.16.1 + esprima: ~4.0.0 + source-map: ~0.6.1 + tiny-invariant: ^1.3.3 + tslib: ^2.0.1 + checksum: be8e896a46b24e30fbeafcd111ff3beaf2b5532d241c199f833fe1c18e89f695b2704cf83f3006fa96a785851019031de0de50bd3e0fd7bb114be18bf2cad900 + languageName: node + linkType: hard + +"recma-build-jsx@npm:^1.0.0": + version: 1.0.0 + resolution: "recma-build-jsx@npm:1.0.0" + dependencies: + "@types/estree": ^1.0.0 + estree-util-build-jsx: ^3.0.0 + vfile: ^6.0.0 + checksum: ba82fe08efdf5ecd178ab76a08a4acac792a41d9f38aea99f93cb3d9e577ba8952620c547e730ba6717c13efa08fdb3dfe893bccfa9717f5a81d3fb2ab20c572 + languageName: node + linkType: hard + +"recma-jsx@npm:^1.0.0": + version: 1.0.0 + resolution: "recma-jsx@npm:1.0.0" + dependencies: + acorn-jsx: ^5.0.0 + estree-util-to-js: ^2.0.0 + recma-parse: ^1.0.0 + recma-stringify: ^1.0.0 + unified: ^11.0.0 + checksum: bc7e3f744e82c9826ddf6fdf8933351b59f0663409a51abe0f3179380584b732f981c16e15c653e60c1e1cc366d4eb9b38e37832a241ec2247062997846e7eef + languageName: node + linkType: hard + +"recma-parse@npm:^1.0.0": + version: 1.0.0 + resolution: "recma-parse@npm:1.0.0" + dependencies: + "@types/estree": ^1.0.0 + esast-util-from-js: ^2.0.0 + unified: ^11.0.0 + vfile: ^6.0.0 + checksum: 676b2097a63ba444985a61af51c2628a546a2537a9ca036ed2249a627fb096f3373139765388b60164e6f5a50c819146a3660351e3f993a360ef107f2ab1c6f8 + languageName: node + linkType: hard + +"recma-stringify@npm:^1.0.0": + version: 1.0.0 + resolution: "recma-stringify@npm:1.0.0" + dependencies: + "@types/estree": ^1.0.0 + estree-util-to-js: ^2.0.0 + unified: ^11.0.0 + vfile: ^6.0.0 + checksum: 3a4f80fe0f6bc11fefa71782dfedb43c28b42518dea450cd1b1591057d9d570f83c85d645bf5ed6da2e47de15a021172c076a8ff4675799855d9f9436cec3c82 + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" + dependencies: + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-abstract: ^1.23.9 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.7 + get-proto: ^1.0.1 + which-builtin-type: ^1.2.1 + checksum: ccc5debeb66125e276ae73909cecb27e47c35d9bb79d9cc8d8d055f008c58010ab8cb401299786e505e4aab733a64cba9daf5f312a58e96a43df66adad221870 + languageName: node + linkType: hard + +"regex-recursion@npm:^5.1.1": + version: 5.1.1 + resolution: "regex-recursion@npm:5.1.1" + dependencies: + regex: ^5.1.1 + regex-utilities: ^2.3.0 + checksum: 4f203ae8f4a2ebf9004f4e4119df5106ba07b39bd3778d7040a83b17f3a82fe22c202661adc3f5586e4eb782fece77e8a01eba8b7033f92147ad7a1e7e1531d7 + languageName: node + linkType: hard + +"regex-utilities@npm:^2.3.0": + version: 2.3.0 + resolution: "regex-utilities@npm:2.3.0" + checksum: 41408777df45cefe1b276281030213235aa1143809c4c10eb5573d2cc27ff2c4aa746c6f4d4c235e3d2f4830eff76b28906ce82fbe72895beca8e15204c2da51 + languageName: node + linkType: hard + +"regex@npm:^5.1.1": + version: 5.1.1 + resolution: "regex@npm:5.1.1" + dependencies: + regex-utilities: ^2.3.0 + checksum: bff664d0c001bf2929c2a5c92399419f719ef5ac9e7198bce653695d37628a3bd21595cea571f93ee13b55c5bbeff7fbab307a9ef569e36b149caf09601d4a31 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.3": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" + dependencies: + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-errors: ^1.3.0 + get-proto: ^1.0.1 + gopd: ^1.2.0 + set-function-name: ^2.0.2 + checksum: 18cb667e56cb328d2dda569d7f04e3ea78f2683135b866d606538cf7b1d4271f7f749f09608c877527799e6cf350e531368f3c7a20ccd1bb41048a48926bdeeb + languageName: node + linkType: hard + +"rehype-recma@npm:^1.0.0": + version: 1.0.0 + resolution: "rehype-recma@npm:1.0.0" + dependencies: + "@types/estree": ^1.0.0 + "@types/hast": ^3.0.0 + hast-util-to-estree: ^3.0.0 + checksum: d3d544ad4a18485ec6b03a194b40473f96e2169c63d6a8ee3ce9af5e87b946c308fb9549b53e010c7dd39740337e387bb1a8856ce1b47f3e957b696f1d5b2d0c + languageName: node + linkType: hard + +"remark-mdx@npm:^3.0.0": + version: 3.1.0 + resolution: "remark-mdx@npm:3.1.0" + dependencies: + mdast-util-mdx: ^3.0.0 + micromark-extension-mdxjs: ^3.0.0 + checksum: ac631296b3f87f46c03b51e8b1e7c90b854361da57ec5d0fddc410c63400fcffae216f2cee3af946407fc88e60bfc5765ba8acabe8e91afc0b7c824db77df152 + languageName: node + linkType: hard + +"remark-parse@npm:^11.0.0": + version: 11.0.0 + resolution: "remark-parse@npm:11.0.0" + dependencies: + "@types/mdast": ^4.0.0 + mdast-util-from-markdown: ^2.0.0 + micromark-util-types: ^2.0.0 + unified: ^11.0.0 + checksum: d83d245290fa84bb04fb3e78111f09c74f7417e7c012a64dd8dc04fccc3699036d828fbd8eeec8944f774b6c30cc1d925c98f8c46495ebcee7c595496342ab7f + languageName: node + linkType: hard + +"remark-rehype@npm:^11.0.0": + version: 11.1.1 + resolution: "remark-rehype@npm:11.1.1" + dependencies: + "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 + mdast-util-to-hast: ^13.0.0 + unified: ^11.0.0 + vfile: ^6.0.0 + checksum: e199dff098ae6a560e13dd1778dec9c61440f979cc931c4ca4dcde0d58e51c0723243a901c1842379b189083cf4d74f224f57833738095ffa9535179d7cf3f01 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f + languageName: node + linkType: hard + +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 1012afc566b3fdb190a6309cc37ef3b2dcc35dff5fa6683a9d00cd25c3247edfbc4691b91078c97adc82a29b77a2660c30d791d65dab4fc78bfc473f60289977 + languageName: node + linkType: hard + +"resolve@npm:^1.22.4": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: ^2.16.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: ab7a32ff4046fcd7c6fdd525b24a7527847d03c3650c733b909b01b757f92eb23510afa9cc3e9bf3f26a3e073b48c88c706dfd4c1d2fb4a16a96b73b6328ddcf + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.5": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: a73ac69a1c4bd34c56b213d91f5b17ce390688fdb4a1a96ed3025cc7e08e7bfb90b3a06fcce461780cb0b589c958afcb0080ab802c71c01a7ecc8c64feafc89f + languageName: node + linkType: hard + +"resolve@patch:resolve@^1.22.4#~builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: ^2.16.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 8aac1e4e4628bd00bf4b94b23de137dd3fe44097a8d528fd66db74484be929936e20c696e1a3edf4488f37e14180b73df6f600992baea3e089e8674291f16c9d + languageName: node + linkType: hard + +"resolve@patch:resolve@^2.0.0-next.5#~builtin": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#~builtin::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 064d09c1808d0c51b3d90b5d27e198e6d0c5dad0eb57065fd40803d6a20553e5398b07f76739d69cbabc12547058bec6b32106ea66622375fb0d7e8fca6a846c + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + languageName: node + linkType: hard + +"rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: ^2.1.0 + checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.2 + get-intrinsic: ^1.2.6 + has-symbols: ^1.1.0 + isarray: ^2.0.5 + checksum: 00f6a68140e67e813f3ad5e73e6dedcf3e42a9fa01f04d44b0d3f7b1f4b257af876832a9bfc82ac76f307e8a6cc652e3cf95876048a26cbec451847cf6ae3707 + languageName: node + linkType: hard + +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + isarray: ^2.0.5 + checksum: 8c11cbee6dc8ff5cc0f3d95eef7052e43494591384015902e4292aef4ae9e539908288520ed97179cee17d6ffb450fe5f05a46ce7a1749685f7524fd568ab5db + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + is-regex: ^1.2.1 + checksum: 3c809abeb81977c9ed6c869c83aca6873ea0f3ab0f806b8edbba5582d51713f8a6e9757d24d2b4b088f563801475ea946c8e77e7713e8c65cdd02305b6caedab + languageName: node + linkType: hard + +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" + dependencies: + loose-envify: ^1.1.0 + checksum: 3e82d1f419e240ef6219d794ff29c7ee415fbdc19e038f680a10c067108e06284f1847450a210b29bbaf97b9d8a97ced5f624c31c681248ac84c80d56ad5a2c4 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + +"semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: ^1.1.4 + es-errors: ^1.3.0 + function-bind: ^1.1.2 + get-intrinsic: ^1.2.4 + gopd: ^1.0.1 + has-property-descriptors: ^1.0.2 + checksum: a8248bdacdf84cb0fab4637774d9fb3c7a8e6089866d04c817583ff48e14149c87044ce683d7f50759a8c50fb87c7a7e173535b06169c87ef76f5fb276dfff72 + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: ^1.1.4 + es-errors: ^1.3.0 + functions-have-names: ^1.2.3 + has-property-descriptors: ^1.0.2 + checksum: d6229a71527fd0404399fc6227e0ff0652800362510822a291925c9d7b48a1ca1a468b11b281471c34cd5a2da0db4f5d7ff315a61d26655e77f6e971e6d0c80f + languageName: node + linkType: hard + +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: ^1.0.1 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + checksum: ec27cbbe334598547e99024403e96da32aca3e530583e4dba7f5db1c43cbc4affa9adfbd77c7b2c210b9b8b2e7b2e600bad2a6c44fd62e804d8233f96bbb62f4 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + languageName: node + linkType: hard + +"shell-quote@npm:^1.8.1": + version: 1.8.2 + resolution: "shell-quote@npm:1.8.2" + checksum: 1e97b62ced1c4c5135015978ebf273bed1f425a68cf84163e83fbb0f34b3ff9471e656720dab2b7cbb4ae0f58998e686d17d166c28dfb3662acd009e8bd7faed + languageName: node + linkType: hard + +"shiki@npm:^1.26.1": + version: 1.26.1 + resolution: "shiki@npm:1.26.1" + dependencies: + "@shikijs/core": 1.26.1 + "@shikijs/engine-javascript": 1.26.1 + "@shikijs/engine-oniguruma": 1.26.1 + "@shikijs/langs": 1.26.1 + "@shikijs/themes": 1.26.1 + "@shikijs/types": 1.26.1 + "@shikijs/vscode-textmate": ^10.0.1 + "@types/hast": ^3.0.4 + checksum: 52ea1ce079766171dc75a1ae19d355487be158383a0e0067cf48b52f7e38f2e6e949d491e4c07e15cdaffc17edd57c1f4ad96984306ba4f7c99c79021ab358a9 + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + checksum: 603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + checksum: 42501371cdf71f4ccbbc9c9e2eb00aaaab80a4c1c429d5e8da713fd4d39ef3b8d4a4b37ed4f275798a65260a551a7131fd87fe67e922dba4ac18586d6aab8b06 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + 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 + checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + 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 + checksum: bf73d6d6682034603eb8e99c63b50155017ed78a522d27c2acec0388a792c3ede3238b878b953a08157093b85d05797217d270b7666ba1f111345fbe933380ff + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 + languageName: node + linkType: hard + +"source-map-js@npm:^1.0.2": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b + languageName: node + linkType: hard + +"source-map@npm:^0.7.0": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 + languageName: node + linkType: hard + +"source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + languageName: node + linkType: hard + +"space-separated-tokens@npm:^2.0.0": + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 + languageName: node + linkType: hard + +"stable-hash@npm:^0.0.4": + version: 0.0.4 + resolution: "stable-hash@npm:0.0.4" + checksum: 21c039d21c1cb739cf8342561753a5e007cb95ea682ccd452e76310bbb9c6987a89de8eda023e320b019f3e4691aabda75079cdbb7dadf7ab9013e931f2f23cd + languageName: node + linkType: hard + +"storybook@npm:^8.4.7": + version: 8.4.7 + resolution: "storybook@npm:8.4.7" + dependencies: + "@storybook/core": 8.4.7 + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + bin: + getstorybook: ./bin/index.cjs + sb: ./bin/index.cjs + storybook: ./bin/index.cjs + checksum: 6cd44f8d51b68f2c2363d5e996bc8bf1e47a5acc2050da351d0fb49acd3d99ed093eef1b148145a1af9c08ead8592a87ee569c4456941a37dc374f9f21ea45c3 + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.1 + checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + +"string.prototype.includes@npm:^2.0.1": + version: 2.0.1 + resolution: "string.prototype.includes@npm:2.0.1" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-abstract: ^1.23.3 + checksum: ed4b7058b092f30d41c4df1e3e805eeea92479d2c7a886aa30f42ae32fde8924a10cc99cccc99c29b8e18c48216608a0fe6bf887f8b4aadf9559096a758f313a + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.3 + define-properties: ^1.2.1 + es-abstract: ^1.23.6 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.6 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + internal-slot: ^1.1.0 + regexp.prototype.flags: ^1.5.3 + set-function-name: ^2.0.2 + side-channel: ^1.1.0 + checksum: 98a09d6af91bfc6ee25556f3d7cd6646d02f5f08bda55d45528ed273d266d55a71af7291fe3fc76854deffb9168cc1a917d0b07a7d5a178c7e9537c99e6d2b57 + languageName: node + linkType: hard + +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: ^1.1.3 + es-abstract: ^1.17.5 + checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.2 + define-data-property: ^1.1.4 + define-properties: ^1.2.1 + es-abstract: ^1.23.5 + es-object-atoms: ^1.0.0 + has-property-descriptors: ^1.0.2 + checksum: 87659cd8561237b6c69f5376328fda934693aedde17bb7a2c57008e9d9ff992d0c253a391c7d8d50114e0e49ff7daf86a362f7961cf92f7564cd01342ca2e385 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" + dependencies: + call-bind: ^1.0.8 + call-bound: ^1.0.2 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: cb86f639f41d791a43627784be2175daa9ca3259c7cb83e7a207a729909b74f2ea0ec5d85de5761e6835e5f443e9420c6ff3f63a845378e4a61dd793177bc287 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: ^1.0.7 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: df1007a7f580a49d692375d996521dc14fd103acda7f3034b3c558a60b82beeed3a64fa91e494e164581793a8ab0ae2f59578a49896a7af6583c1f20472bce96 + languageName: node + linkType: hard + +"stringify-entities@npm:^4.0.0": + version: 4.0.4 + resolution: "stringify-entities@npm:4.0.4" + dependencies: + character-entities-html4: ^2.0.0 + character-entities-legacy: ^3.0.0 + checksum: ac1344ef211eacf6cf0a0a8feaf96f9c36083835b406560d2c6ff5a87406a41b13f2f0b4c570a3b391f465121c4fd6822b863ffb197e8c0601a64097862cc5b5 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: ^5.0.1 + checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: ^6.0.1 + checksum: 859c73fcf27869c22a4e4d8c6acfe690064659e84bef9458aa6d13719d09ca88dcfd40cbf31fd0be63518ea1a643fe070b4827d353e09533a5b0b9fd4553d64d + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 + languageName: node + linkType: hard + +"style-to-object@npm:^1.0.0": + version: 1.0.8 + resolution: "style-to-object@npm:1.0.8" + dependencies: + inline-style-parser: 0.2.4 + checksum: 80ca4773fc728d7919edc552eb46bab11aa8cdd0b426528ee8b817ba6872ea7b9d38fbb97b6443fd2d4895a4c4b02ec32765387466a302d0b4d1b91deab1e1a0 + languageName: node + linkType: hard + +"styled-jsx@npm:5.1.1": + version: 5.1.1 + resolution: "styled-jsx@npm:5.1.1" + dependencies: + client-only: 0.0.1 + peerDependencies: + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + checksum: 523a33b38603492547e861b98e29c873939b04e15fbe5ef16132c6f1e15958126647983c7d4675325038b428a5e91183d996e90141b18bdd1bbadf6e2c45b2fa + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: ^4.0.0 + checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + languageName: node + linkType: hard + +"supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: ^4.0.0 + checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + languageName: node + linkType: hard + +"tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a + languageName: node + linkType: hard + +"tiny-invariant@npm:^1.3.3": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + languageName: node + linkType: hard + +"tree-kill@npm:^1.2.2": + version: 1.2.2 + resolution: "tree-kill@npm:1.2.2" + bin: + tree-kill: cli.js + checksum: 49117f5f410d19c84b0464d29afb9642c863bc5ba40fcb9a245d474c6d5cc64d1b177a6e6713129eb346b40aebb9d4631d967517f9fbe8251c35b21b13cd96c7 + languageName: node + linkType: hard + +"trim-lines@npm:^3.0.0": + version: 3.0.1 + resolution: "trim-lines@npm:3.0.1" + checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed + languageName: node + linkType: hard + +"trough@npm:^2.0.0": + version: 2.2.0 + resolution: "trough@npm:2.2.0" + checksum: 6097df63169aca1f9b08c263b1b501a9b878387f46e161dde93f6d0bba7febba93c95f876a293c5ea370f6cb03bcb687b2488c8955c3cfb66c2c0161ea8c00f6 + languageName: node + linkType: hard + +"ts-api-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "ts-api-utils@npm:2.0.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: f16f3e4e3308e7ad7ccf0bec3e0cb2e06b46c2d6919c40b6439e37912409c72f14340d231343b2b1b8cc17c2b8b01c5f2418690ea788312db6ca4e72cf2df6d8 + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.15.0": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": ^0.0.29 + json5: ^1.0.2 + minimist: ^1.2.6 + strip-bom: ^3.0.0 + checksum: 59f35407a390d9482b320451f52a411a256a130ff0e7543d18c6f20afab29ac19fbe55c360a93d6476213cc335a4d76ce90f67df54c4e9037f7d240920832201 + languageName: node + linkType: hard + +"tslib@npm:^2.0.1, tslib@npm:^2.1.0, tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: ^1.2.1 + checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 + languageName: node + linkType: hard + +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: ^1.0.3 + es-errors: ^1.3.0 + is-typed-array: ^1.1.14 + checksum: 3fb91f0735fb413b2bbaaca9fabe7b8fc14a3fa5a5a7546bab8a57e755be0e3788d893195ad9c2b842620592de0e68d4c077d4c2c41f04ec25b8b5bb82fa9a80 + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: ^1.0.8 + for-each: ^0.3.3 + gopd: ^1.2.0 + has-proto: ^1.2.0 + is-typed-array: ^1.1.14 + checksum: cda9352178ebeab073ad6499b03e938ebc30c4efaea63a26839d89c4b1da9d2640b0d937fc2bd1f049eb0a38def6fbe8a061b601292ae62fe079a410ce56e3a6 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.8 + for-each: ^0.3.3 + gopd: ^1.2.0 + has-proto: ^1.2.0 + is-typed-array: ^1.1.15 + reflect.getprototypeof: ^1.0.9 + checksum: 670b7e6bb1d3c2cf6160f27f9f529e60c3f6f9611c67e47ca70ca5cfa24ad95415694c49d1dbfeda016d3372cab7dfc9e38c7b3e1bb8d692cae13a63d3c144d7 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" + dependencies: + call-bind: ^1.0.7 + for-each: ^0.3.3 + gopd: ^1.0.1 + is-typed-array: ^1.1.13 + possible-typed-array-names: ^1.0.0 + reflect.getprototypeof: ^1.0.6 + checksum: deb1a4ffdb27cd930b02c7030cb3e8e0993084c643208e52696e18ea6dd3953dfc37b939df06ff78170423d353dc8b10d5bae5796f3711c1b3abe52872b3774c + languageName: node + linkType: hard + +"typescript@npm:^5": + version: 5.7.2 + resolution: "typescript@npm:5.7.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: b55300c4cefee8ee380d14fa9359ccb41ff8b54c719f6bc49b424899d662a5ce62ece390ce769568c7f4d14af844085255e63788740084444eb12ef423b13433 + languageName: node + linkType: hard + +"typescript@patch:typescript@^5#~builtin": + version: 5.7.2 + resolution: "typescript@patch:typescript@npm%3A5.7.2#~builtin::version=5.7.2&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 803430c6da2ba73c25a21880d8d4f08a56d9d2444e6db2ea949ac4abceeece8e4a442b7b9b585db7d8a0b47ebda2060e45fe8ee8b8aca23e27ec1d4844987ee6 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" + dependencies: + call-bound: ^1.0.3 + has-bigints: ^1.0.2 + has-symbols: ^1.1.0 + which-boxed-primitive: ^1.1.1 + checksum: 729f13b84a5bfa3fead1d8139cee5c38514e63a8d6a437819a473e241ba87eeb593646568621c7fc7f133db300ef18d65d1a5a60dc9c7beb9000364d93c581df + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 + languageName: node + linkType: hard + +"unified@npm:^11.0.0": + version: 11.0.5 + resolution: "unified@npm:11.0.5" + dependencies: + "@types/unist": ^3.0.0 + bail: ^2.0.0 + devlop: ^1.0.0 + extend: ^3.0.0 + is-plain-obj: ^4.0.0 + trough: ^2.0.0 + vfile: ^6.0.0 + checksum: b3bf7fd6f568cc261e074dae21188483b0f2a8ab858d62e6e85b75b96cc655f59532906ae3c64d56a9b257408722d71f1d4135292b3d7ee02907c8b592fb3cf0 + languageName: node + linkType: hard + +"unist-util-is@npm:^6.0.0": + version: 6.0.0 + resolution: "unist-util-is@npm:6.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: f630a925126594af9993b091cf807b86811371e465b5049a6283e08537d3e6ba0f7e248e1e7dab52cfe33f9002606acef093441137181b327f6fe504884b20e2 + languageName: node + linkType: hard + +"unist-util-position-from-estree@npm:^2.0.0": + version: 2.0.0 + resolution: "unist-util-position-from-estree@npm:2.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: d3b3048a5727c2367f64ef6dcc5b20c4717215ef8b1372ff9a7c426297c5d1e5776409938acd01531213e2cd2543218d16e73f9f862f318e9496e2c73bb18354 + languageName: node + linkType: hard + +"unist-util-position@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-position@npm:5.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: f89b27989b19f07878de9579cd8db2aa0194c8360db69e2c99bd2124a480d79c08f04b73a64daf01a8fb3af7cba65ff4b45a0b978ca243226084ad5f5d441dde + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^4.0.0": + version: 4.0.0 + resolution: "unist-util-stringify-position@npm:4.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: e2e7aee4b92ddb64d314b4ac89eef7a46e4c829cbd3ee4aee516d100772b490eb6b4974f653ba0717a0071ca6ea0770bf22b0a2ea62c65fcba1d071285e96324 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^6.0.0": + version: 6.0.1 + resolution: "unist-util-visit-parents@npm:6.0.1" + dependencies: + "@types/unist": ^3.0.0 + unist-util-is: ^6.0.0 + checksum: 08927647c579f63b91aafcbec9966dc4a7d0af1e5e26fc69f4e3e6a01215084835a2321b06f3cbe7bf7914a852830fc1439f0fc3d7153d8804ac3ef851ddfa20 + languageName: node + linkType: hard + +"unist-util-visit@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-visit@npm:5.0.0" + dependencies: + "@types/unist": ^3.0.0 + unist-util-is: ^6.0.0 + unist-util-visit-parents: ^6.0.0 + checksum: 9ec42e618e7e5d0202f3c191cd30791b51641285732767ee2e6bcd035931032e3c1b29093f4d7fd0c79175bbc1f26f24f26ee49770d32be76f8730a652a857e6 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: ^2.1.0 + checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 + languageName: node + linkType: hard + +"util@npm:^0.12.5": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: ^2.0.3 + is-arguments: ^1.0.4 + is-generator-function: ^1.0.7 + is-typed-array: ^1.1.3 + which-typed-array: ^1.1.2 + checksum: 705e51f0de5b446f4edec10739752ac25856541e0254ea1e7e45e5b9f9b0cb105bc4bd415736a6210edc68245a7f903bf085ffb08dd7deb8a0e847f60538a38a + languageName: node + linkType: hard + +"vfile-message@npm:^4.0.0": + version: 4.0.2 + resolution: "vfile-message@npm:4.0.2" + dependencies: + "@types/unist": ^3.0.0 + unist-util-stringify-position: ^4.0.0 + checksum: 964e7e119f4c0e0270fc269119c41c96da20afa01acb7c9809a88365c8e0c64aa692fafbd952669382b978002ecd7ad31ef4446d85e8a22cdb62f6df20186c2d + languageName: node + linkType: hard + +"vfile@npm:^6.0.0": + version: 6.0.3 + resolution: "vfile@npm:6.0.3" + dependencies: + "@types/unist": ^3.0.0 + vfile-message: ^4.0.0 + checksum: 152b6729be1af70df723efb65c1a1170fd483d41086557da3651eea69a1dd1f0c22ea4344834d56d30734b9185bcab63e22edc81d3f0e9bed8aa4660d61080af + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" + dependencies: + is-bigint: ^1.1.0 + is-boolean-object: ^1.2.1 + is-number-object: ^1.1.1 + is-string: ^1.1.1 + is-symbol: ^1.1.1 + checksum: ee41d0260e4fd39551ad77700c7047d3d281ec03d356f5e5c8393fe160ba0db53ef446ff547d05f76ffabfd8ad9df7c9a827e12d4cccdbc8fccf9239ff8ac21e + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" + dependencies: + call-bound: ^1.0.2 + function.prototype.name: ^1.1.6 + has-tostringtag: ^1.0.2 + is-async-function: ^2.0.0 + is-date-object: ^1.1.0 + is-finalizationregistry: ^1.1.0 + is-generator-function: ^1.0.10 + is-regex: ^1.2.1 + is-weakref: ^1.0.2 + isarray: ^2.0.5 + which-boxed-primitive: ^1.1.0 + which-collection: ^1.0.2 + which-typed-array: ^1.1.16 + checksum: 7a3617ba0e7cafb795f74db418df889867d12bce39a477f3ee29c6092aa64d396955bf2a64eae3726d8578440e26777695544057b373c45a8bcf5fbe920bf633 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: ^2.0.3 + is-set: ^2.0.3 + is-weakmap: ^2.0.2 + is-weakset: ^2.0.3 + checksum: c51821a331624c8197916598a738fc5aeb9a857f1e00d89f5e4c03dc7c60b4032822b8ec5696d28268bb83326456a8b8216344fb84270d18ff1d7628051879d9 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18, which-typed-array@npm:^1.1.2": + version: 1.1.18 + resolution: "which-typed-array@npm:1.1.18" + dependencies: + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + for-each: ^0.3.3 + gopd: ^1.2.0 + has-tostringtag: ^1.0.2 + checksum: d2feea7f51af66b3a240397aa41c796585033e1069f18e5b6d4cd3878538a1e7780596fd3ea9bf347c43d9e98e13be09b37d9ea3887cef29b11bc291fd47bb52 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + languageName: node + linkType: hard + +"ws@npm:^8.2.3": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 91d4d35bc99ff6df483bdf029b9ea4bfd7af1f16fc91231a96777a63d263e1eabf486e13a2353970efc534f9faa43bdbf9ee76525af22f4752cbc5ebda333975 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 + languageName: node + linkType: hard + +"zwitch@npm:^2.0.0, zwitch@npm:^2.0.4": + version: 2.0.4 + resolution: "zwitch@npm:2.0.4" + checksum: f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 + languageName: node + linkType: hard diff --git a/docs/auth/atlassian/provider.md b/docs/auth/atlassian/provider.md index f4793d4f51..a1009b586e 100644 --- a/docs/auth/atlassian/provider.md +++ b/docs/auth/atlassian/provider.md @@ -22,13 +22,13 @@ To add Atlassian authentication, you must create an OAuth 2.0 (3LO) app. Go to `https://developer.atlassian.com/console/myapps/`. -Click on the drop down `Create`, and choose `OAuth 2.0 integration`. +Click on the drop-down `Create` and choose `OAuth 2.0 integration`. Name your integration and click on the `Create` button. Settings for local development: -- Callback URL: `http://localhost:7007/api/auth/atlassian` +- Callback URL: `http://localhost:7007/api/auth/atlassian/handler/frame` - Use rotating refresh tokens - For permissions, you **must** enable `View user profile` for the currently logged-in user, under `User identity API` @@ -46,40 +46,46 @@ auth: development: clientId: ${AUTH_ATLASSIAN_CLIENT_ID} clientSecret: ${AUTH_ATLASSIAN_CLIENT_SECRET} - scope: ${AUTH_ATLASSIAN_SCOPES} + audience: 'https://api.atlassian.com' + callbackUrl: 'https://backstage.example.com/api/auth/atlassian/handler/frame' + additionalScopes: + - 'read:jira-user' + - 'read:jira-work' signIn: resolvers: # See https://backstage.io/docs/auth/atlassian/provider#resolvers for more resolvers - resolver: usernameMatchingUserEntityName ``` -The Atlassian provider is a structure with three configuration keys: +The Atlassian provider is a structure with the following configuration keys: - `clientId`: The Key you generated in the developer console. - `clientSecret`: The Secret tied to the generated Key. -- `scope`: List of scopes the app has permissions for, separated by spaces. +- `audience`: (Optional) Specifies the intended recipient of the tokens. +- `callbackUrl`: (Optional) Must match the redirect URL set in Atlassian OAuth settings. +- `additionalScopes` : (Optional) Additional permissions requested from Atlassian. -**NOTE:** the scopes `offline_access`, `read:jira-work`, and `read:jira-user` are provided by default. +**NOTE:** The scopes `offline_access`, `read:jira-work`, and `read:jira-user` are provided by default. ### Resolvers This provider includes several resolvers out of the box that you can use: -- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. -- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. -- `usernameMatchingUserEntityName`: Matches the username from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found, it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. +- `usernameMatchingUserEntityName`: Matches the username from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. :::note Note -The resolvers will be tried in order, but will only be skipped if they throw a `NotFoundError`. +The resolvers will be tried in order but will only be skipped if they throw a `NotFoundError`. ::: -If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. +If these resolvers do not fit your needs, you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. ## Backend Installation -To add the provider to the backend we will first need to install the package by running this command: +To add the provider to the backend, we will first need to install the package by running this command: ```bash title="from your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-atlassian-provider diff --git a/docs/auth/auth0/provider.md b/docs/auth/auth0/provider.md index bc2a02fe1f..2873a2cace 100644 --- a/docs/auth/auth0/provider.md +++ b/docs/auth/auth0/provider.md @@ -22,10 +22,10 @@ provider that can authenticate users using OAuth. 3. Create an Application - Name: Backstage (or your custom app name) - Application type: Single Page Web Application -4. Click on the Settings tab +4. Click on the Settings tab. 5. Add under `Application URIs` > `Allowed Callback URLs`: `http://localhost:7007/api/auth/auth0/handler/frame` -6. Click `Save Changes` +6. Click `Save Changes`. ## Configuration @@ -50,10 +50,10 @@ auth: The Auth0 provider is a structure with these configuration keys: -- `clientId`: The Application client ID, found on the Auth0 Application page +- `clientId`: The Application client ID, found on the Auth0 Application page. - `clientSecret`: The Application client secret, found on the Auth0 Application - page -- `domain`: The Application domain, found on the Auth0 Application page + page. +- `domain`: The Application domain, found on the Auth0 Application page. It additionally relies on the following configuration to function: @@ -63,16 +63,16 @@ Auth0 requires a session, so you need to give the session a secret key. ### Optional -- `audience`: The intended recipients of the token +- `audience`: The intended recipients of the token. - `connection`: Social identity provider name. To check the available social connections, please visit [Auth0 Social Connections](https://marketplace.auth0.com/features/social-connections). -- `connectionScope`: Additional scopes in the interactive token request. It should always be used in combination with the `connection` parameter +- `connectionScope`: Additional scopes in the interactive token request. It should always be used in combination with the `connection` parameter. ### Resolvers This provider includes several resolvers out of the box that you can use: -- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. -- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found, it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. :::note Note @@ -80,11 +80,11 @@ The resolvers will be tried in order, but will only be skipped if they throw a ` ::: -If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. +If these resolvers do not fit your needs, you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. ## Backend Installation -To add the provider to the backend we will first need to install the package by running this command: +To add the provider to the backend, we will first need to install the package by running this command: ```bash title="from your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-auth0-provider diff --git a/docs/auth/aws-alb/provider.md b/docs/auth/aws-alb/provider.md index 8ce1eba5ab..5380877f86 100644 --- a/docs/auth/aws-alb/provider.md +++ b/docs/auth/aws-alb/provider.md @@ -5,7 +5,7 @@ sidebar_label: AWS ALB description: Adding AWS ALB as an authentication provider in Backstage --- -Backstage can de deployed behind [AWS Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) +Backstage can be deployed behind [AWS Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) and get the user seamlessly authenticated. ## Configuration @@ -35,20 +35,20 @@ Ensure that you have set the signer correctly. It is also recommended that you r This provider includes several resolvers out of the box that you can use: -- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. -- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found, it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. :::note Note -The resolvers will be tried in order, but will only be skipped if they throw a `NotFoundError`. +The resolvers will be tried in order but will only be skipped if they throw a `NotFoundError`. ::: -If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. +If these resolvers do not fit your needs, you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. ## Backend Installation -To add the provider to the backend we will first need to install the package by running this command: +To add the provider to the backend, we will first need to install the package by running this command: ```bash title="from your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-aws-alb-provider @@ -65,6 +65,6 @@ backend.add(import('@backstage/plugin-auth-backend-module-aws-alb-provider')); ## Adding the provider to the Backstage frontend -See [Sign-In with Proxy Providers](../index.md#sign-in-with-proxy-providers) for pointers on how to set up the sign-in page, and to also make it work smoothly for local development. You'll use `awsalb` as the provider name. +See [Sign-In with Proxy Providers](../index.md#sign-in-with-proxy-providers) for pointers on how to set up the sign-in page and also make it work smoothly for local development. You'll use `awsalb` as the provider name. If you [provide a custom sign in resolver](https://backstage.io/docs/auth/identity-resolver#building-custom-resolvers), you can skip the `signIn` block entirely. diff --git a/docs/backend-system/core-services/http-router.md b/docs/backend-system/core-services/http-router.md index c354f4fceb..d7658d9a67 100644 --- a/docs/backend-system/core-services/http-router.md +++ b/docs/backend-system/core-services/http-router.md @@ -113,7 +113,7 @@ backend.add( }); router.use(createAuthIntegrationRouter({ auth })); - router.use(createLifecycleMiddleware({ lifecycle })); + router.use(createLifecycleMiddleware({ config, lifecycle })); router.use(credentialsBarrier.middleware); router.use(createCookieAuthRefreshMiddleware({ auth, httpAuth })); diff --git a/docs/conf/writing.md b/docs/conf/writing.md index 6e827c075e..85a719e1d0 100644 --- a/docs/conf/writing.md +++ b/docs/conf/writing.md @@ -239,4 +239,7 @@ privateKey: | -----END RSA PRIVATE KEY----- ``` -**Warning: Sensitive information, such as private keys, should not be hard coded**. We recommend that this entire file should be a secret and stored as such in a secure storage solution like Vault, to ensure they are neither exposed nor misused. This example key part only shows the format on how to use the yaml | syntax to make sure that the key is valid. +> [!WARNING] +> Sensitive information, such as private keys, should not be hard coded. + +We recommend that this entire file should be a secret and stored as such in a secure storage solution like Vault, to ensure they are neither exposed nor misused. This example key part only shows the format on how to use the yaml | syntax to make sure that the key is valid. diff --git a/docs/deployment/k8s.md b/docs/deployment/k8s.md index 46ba273e14..1a225d6d12 100644 --- a/docs/deployment/k8s.md +++ b/docs/deployment/k8s.md @@ -210,6 +210,11 @@ spec: envFrom: - secretRef: name: postgres-secrets + env: + - name: POSTGRES_HOST + value: postgres.backstage + - name: POSTGRES_PORT + value: '5432' volumeMounts: - mountPath: /var/lib/postgresql/data name: postgresdb @@ -387,8 +392,8 @@ $ yarn build-image --tag backstage:1.0.0 ``` There is no special wiring needed to access the PostgreSQL service. Since it's -running on the same cluster, Kubernetes will inject `POSTGRES_SERVICE_HOST` and -`POSTGRES_SERVICE_PORT` environment variables into our Backstage container. +running on the same cluster, Kubernetes will inject `POSTGRES_HOST` and +`POSTGRES_PORT` environment variables into our Backstage container. These can be used in the Backstage `app-config.yaml` along with the secrets. Apply this to `app-config.production.yaml` as well if you have one: ```yaml @@ -396,8 +401,8 @@ backend: database: client: pg connection: - host: ${POSTGRES_SERVICE_HOST} - port: ${POSTGRES_SERVICE_PORT} + host: ${POSTGRES_HOST} + port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} ``` diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 0c8eb7bcda..c56f763a4e 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -63,7 +63,87 @@ There are many options that can be set using `tableOptions`, the full list of se ## Customize Columns -By default the columns you see in the `CatalogIndexPage` were selected to be a good starting point for most but there may be reasons that you would like to customize these with more or less columns. One primary use case for this customization is if you added a custom Kind. Support for this was added in v1.23.0 of Backstage, make sure you are on that version or newer to use this feature. Here's an example of how to make this customization: +The columns you see in the `CatalogIndexPage` were selected to be a good starting point for most, but there may be cases where you would like to add or remove columns from existing or custom Kinds. + +### Adding a column to an existing Kind + +Suppose we want to add a new User Email column to the `User` kind in the Catalog. We can do this by overriding the `columns` that we pass into the `CatalogIndexPage` component in our `App.tsx`. First, we need to match the entity kind that we want to override, and then define the columns to show: + +```tsx title="packages/app/src/App.tsx" +{ + /* highlight-add-start */ +} +const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { + if (entityListContext.filters.kind?.value === 'user') { + return [ + // Render existing columns + ...CatalogTable.defaultColumnsFunc(entityListContext), + // Add new columns here + ]; + } + + return CatalogTable.defaultColumnsFunc(entityListContext); +}; +{ + /* highlight-add-end */ +} +``` + +Then, we can implement the `createUserEmailColumn` function and add it to the list of columns. `field` is used to access the data from the entity, while `render` lets us customize how we display the data: + +```tsx title="packages/app/src/App.tsx" +{/* highlight-add-start */} +const createUserEmailColumn = (): TableColumn => ({ + title: 'User Email', + field: 'entity.spec.profile.email', + render: ({ entity }) => ( + + ), +}); +{/* highlight-add-end */} + +const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { + if (entityListContext.filters.kind?.value === 'user') { + return [ + return [ + // Render existing columns + ...CatalogTable.defaultColumnsFunc(entityListContext), + // Add new columns here + {/* highlight-add-next-line */} + createUserEmailColumn(), + ]; + } + + return CatalogTable.defaultColumnsFunc(entityListContext); +}; +``` + +Finally, we can pass the `myColumnsFunc` to the `CatalogIndexPage` component: + +```tsx title="packages/app/src/App.tsx" +const routes = ( + + + } + /> + {/* Other routes */} + +) +``` + +### Adding columns to a custom or specific Kind + +Another use case for customization is when adding a custom `Kind`. This feature is available in Backstage >= `v1.23.0`. For example: ```tsx title="packages/app/src/App.tsx" import { @@ -97,7 +177,7 @@ const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { :::note Note -The above example has been simplified and you will most likely have more code then just this in your `App.tsx` file. +In the examples above, the contents of the files have been shortened for simplicity. ::: @@ -168,15 +248,15 @@ const customActions: TableProps['actions'] = [ :::note Note -The above example has been simplified and you will most likely have more code then just this in your `App.tsx` file. +In the example above, the contents of `App.tsx` has been shortened for simplicity. ::: -The above customization will override the existing actions. Currently the only way to keep them and add your own is to also include the existing actions in your array by copying them from the [`defaultActions`](https://github.com/backstage/backstage/blob/57397e7d6d2d725712c439f4ab93f2ac6aa27bf8/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx#L113-L168). +The above customization will override the existing actions. Currently, the only way to keep them and add your own is to also include the existing actions in your array by copying them from the [`defaultActions`](https://github.com/backstage/backstage/blob/57397e7d6d2d725712c439f4ab93f2ac6aa27bf8/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx#L113-L168). ## Customize Filters -There are three options you have for filters: adjusting the existing filters with props, adding or removing the default filters, or creating a brand new custom filter. The following sections cover these cases +There are various ways to customize filters: adjusting the existing filters with props, adding or removing default filters, creating brand-new custom filters, etc. The following sections cover these cases: ### Default Filter Props @@ -205,7 +285,7 @@ import { DefaultFilters } from '@backstage/plugin-catalog-react'; ### Removing Default Filters -You may have reasons not use the Lifecycle, Tag, and Processing Status filters, here's an example of how you would remove them: +If you have reasons not to use the Lifecycle, Tag, and Processing Status filters, here's an example of how to remove them: ```tsx title="packages/app/src/App.tsx" import { @@ -236,7 +316,7 @@ import { ### Custom Filters -You can add custom filters. For example, suppose that I want to allow filtering by a custom annotation added to entities, `company.com/security-tier`. Here is how we can build a filter to support that need. +You can add custom filters. For example, suppose that we want to allow filtering by a custom annotation added to entities, `company.com/security-tier`. Here is how we can build a filter to support that need. First we need to create a new filter that implements the `EntityFilter` interface: diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index 11e67af07f..8cfc5464f2 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -220,7 +220,7 @@ const scaffolderModuleCustomExtensions = createBackendModule({ async init({ scaffolder /* ..., other dependencies */ }) { // Here you have the opportunity to interact with the extension // point before the plugin itself gets instantiated - scaffolder.addActions(new createNewFileAction()); // just an example + scaffolder.addActions(createNewFileAction()); // just an example }, }); }, diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 687cf0be16..7aee835910 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -91,7 +91,7 @@ app the intended workspace rather than in the root._ - **packages/**: Lerna leaf packages or "workspaces". Everything here is going to be a separate package, managed by lerna. -- **packages/app/**: An fully functioning Backstage frontend app, that acts as a +- **packages/app/**: A fully functioning Backstage frontend app that acts as a good starting point for you to get to know Backstage. - **packages/backend/**: We include a backend that helps power features such as [Authentication](https://backstage.io/docs/auth/), diff --git a/docs/getting-started/keeping-backstage-updated.md b/docs/getting-started/keeping-backstage-updated.md index a811a33383..bf0b569c29 100644 --- a/docs/getting-started/keeping-backstage-updated.md +++ b/docs/getting-started/keeping-backstage-updated.md @@ -30,6 +30,7 @@ yarn backstage-cli versions:bump The reason for bumping all `@backstage` packages at once is to maintain the dependencies that they have between each other. + :::tip To make the version bump process even easier and more streamlined we highly recommend using the [Backstage yarn plugin](#managing-package-versions-with-the-backstage-yarn-plugin) @@ -142,10 +143,17 @@ down the number of duplicate packages. The Backstage CLI uses [global-agent](https://www.npmjs.com/package/global-agent) to configure HTTP/HTTPS proxy settings using environment variables. This allows you to route the CLI’s network traffic through a proxy server, which can be useful in environments with restricted internet access. +Additionally, yarn needs a proxy too (sometimes), when in environments with restricted internet access. It uses different settings than the global-agent module. If you decide to use the backstage yarn plugin [mentioned above](#plugin), you will need to set additional proxy values. +If you will always need proxy settings in all environments and situations, you can add `httpProxy` and `httpsProxy` values to [the yarnrc.yml file](https://yarnpkg.com/configuration/yarnrc). If some environments need it (say a developer workstation) but other environments do not (perhaps a CI build server running on AWS), then you may not want to update the yarnrc.yml file but just set environment variables `YARN_HTTP_PROXY` and `YARN_HTTPS_PROXY` in the environments/situations where you need to proxy. + +**If you plan to use the backstage yarn plugin, you will need these extra yarn proxy settings to both install the plugin and run the `versions:bump` command**. If you do not plan to use the backstage yarn plugin, it seems like the global agent proxy settings alone are sufficient. + ### Example Configuration ```bash export GLOBAL_AGENT_HTTP_PROXY=http://proxy.company.com:8080 export GLOBAL_AGENT_HTTPS_PROXY=https://secure-proxy.company.com:8080 export GLOBAL_AGENT_NO_PROXY=localhost,internal.company.com +export YARN_HTTP_PROXY=http://proxy.company.com:8080 # optional +export YARN_HTTPS_PROXY=https://secure-proxy.company.com:8080 # optional ``` diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index e6fb69a520..068aa70101 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -258,67 +258,203 @@ The `myUserTransformer`, `myGroupTransformer`, `myOrganizationTransformer`, and The following provides an example of each kind of transformer. We recommend creating a `transformers.ts` file in your `packages/backend/src` folder for these. -```ts title="packages/backend/src/transformers.ts" +First, lets set up the basic structure of the file, with functions for each kind of transformer that simply passes through the default transformer unchanged. + +```ts title="packages/backend/src/extensions/transformers.ts" import * as MicrosoftGraph from '@microsoft/microsoft-graph-types'; import { defaultGroupTransformer, defaultUserTransformer, defaultOrganizationTransformer, + microsoftGraphOrgEntityProviderTransformExtensionPoint, MicrosoftGraphProviderConfig, } from '@backstage/plugin-catalog-backend-module-msgraph'; import { GroupEntity, UserEntity } from '@backstage/catalog-model'; +import { createBackendModule } from '@backstage/backend-plugin-api'; -// This group transformer completely replaces the built in logic with custom logic. +// The Group transformer transforms Groups that are ingested from MS Graph export async function myGroupTransformer( group: MicrosoftGraph.Group, groupPhoto?: string, ): Promise { - return { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Group', - metadata: { - name: group.id!, - annotations: {}, - }, - spec: { - type: 'Microsoft Entra ID', - children: [], - }, - }; + const backstageGroup = await defaultGroupTransformer(group, groupPhoto); + return backstageGroup; } -// This user transformer makes use of the built in logic, but also sets the description field +// The User transformer transforms Users that are ingested from MS Graph export async function myUserTransformer( graphUser: MicrosoftGraph.User, userPhoto?: string, ): Promise { const backstageUser = await defaultUserTransformer(graphUser, userPhoto); - - if (backstageUser) { - backstageUser.metadata.description = 'Loaded from Microsoft Entra ID'; - } - return backstageUser; } -// Example organization transformer that removes the organization group completely +// The Organization transformer transforms the root MS Graph Organization into a Group export async function myOrganizationTransformer( graphOrganization: MicrosoftGraph.Organization, ): Promise { - return undefined; + const backstageOrg = await defaultOrganizationTransformer(graphOrganization); + return backstageOrg; } -// Example config transformer that expands the group filter to also include 'azure-group-a' +// The Provider Config transformer enables modification of the plugin config export async function myProviderConfigTransformer( provider: MicrosoftGraphProviderConfig, ): Promise { + return provider; +} + +// Wrapping these functions in a Module allows us to inject them into the Catalog plugin easily +export default createBackendModule({ + pluginId: 'catalog', + moduleId: 'msgraph-org', + register(reg) { + reg.registerInit({ + deps: { + microsoftGraphTransformers: + microsoftGraphOrgEntityProviderTransformExtensionPoint, + }, + async init({ microsoftGraphTransformers }) { + // Set the transformers to our custom functions + microsoftGraphTransformers.setUserTransformer(myUserTransformer); + microsoftGraphTransformers.setGroupTransformer(myGroupTransformer); + microsoftGraphTransformers.setOrganizationTransformer( + myOrganizationTransformer, + ); + microsoftGraphTransformers.setProviderConfigTransformer( + myProviderConfigTransformer, + ); + }, + }); + }, +}); +``` + +Now lets customize each of the providers to suit our needs. + +This Group Transformer example will have the default logic completely removed and replaced with our custom logic: + +```ts +export async function myGroupTransformer( + group: MicrosoftGraph.Group, + groupPhoto?: string, +): Promise { + // highlight-remove-start + const backstageGroup = await defaultGroupTransformer(group, groupPhoto); + return backstageGroup; + // highlight-remove-end + // highlight-add-start + // All of our groups are prefixed with the organisational unit: 'Engineering - Team A' + // We want to drop the org unit from the group name and use it for the namespace instead + const groupNameArr = group.displayName.split(' - '); + const displayName = groupNameArr[1]; + // Standardise name and namespace by replacing spaces with hyphens and converting to lowercase + const namespace = groupNameArr[0].replace(' ', '-').toLowerCase(); + const groupName = groupNameArr[1].replace(' ', '-').toLowerCase(); + + return { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { + name: groupName, + description: group.description, + annotations: {}, + }, + spec: { + type: 'team', + displayName: displayName, + email: group.mail, + children: [], + }, + }; + // highlight-add-end +} +``` + +This User Transformer example makes use of the built-in logic, but also modifies the username and sets a description + +```ts +export async function myUserTransformer( + graphUser: MicrosoftGraph.User, + userPhoto?: string, +): Promise { + const backstageUser = await defaultUserTransformer(graphUser, userPhoto); + // highlight-add-start + // Make sure the default transformer returned an entity + if (backstageUser) { + // Update the description to make it obvious where this entity came from + backstageUser.metadata.description = + 'Loaded from Microsoft Entra ID via MyCustomUserTransformer'; + + // The default transformer sets the username to the email address with invalid characters subbed out: 'user_domain.com' + // Set the username to the local part of the email address in lowercase without the domain + const newName = backstageUser.metadata.name.split('_')[0].toLowerCase(); + backstageUser.metadata.name = newName; + + return backstageUser; + } + return undefined; + // highlight-add-end + // highlight-remove-start + return backstageUser; + // highlight-remove-end +} +``` + +This Organization Transformer example removes the organization group completely by returning undefined + +```ts +export async function myOrganizationTransformer( + graphOrganization: MicrosoftGraph.Organization, +): Promise { + // highlight-remove-start + const backstageOrg = await defaultOrganizationTransformer(graphOrganization); + return backstageOrg; + // highlight-remove-end + // highlight-add-start + // The org transformer creates a group to be used as the base of the relationship tree for groups + // We don't need this to be created, so return undefined instead of an entity + return undefined; + // highlight-add-end +} +``` + +This Config Transformer example expands the group filter to also include 'azure-group-a' + +```ts +export async function myProviderConfigTransformer( + provider: MicrosoftGraphProviderConfig, +): Promise { + // highlight-add-start + // The filter in our config file relies on a property that has been intermittantly causing this important group to fail ingestion + // Ensure the group is always discovered by the filter if (!provider.groupFilter?.includes('azure-group-a')) { provider.groupFilter = `${provider.groupFilter} or displayName eq 'azure-group-a'`; } + // highlight-add-end return provider; } ``` +Now we just need to add our new module to the Backend. + +```ts title="packages/backend/src/index.ts" +// Your file will have more than this in it + +const backend = createBackend(); + +... + +// highlight-add-start +backend.add(import('./extensions/transformers')); +// highlight-add-end + +... + +backend.start(); +``` + ## Troubleshooting ### No data diff --git a/docs/notifications/index.md b/docs/notifications/index.md index bb8a7dc246..5b5e2bcfa2 100644 --- a/docs/notifications/index.md +++ b/docs/notifications/index.md @@ -130,226 +130,6 @@ export default app.createRoot( If the signals plugin is properly configured, it will be automatically discovered by the notifications plugin and used. -## Configuration - -### Notifications Backend - -The Notifications backend plugin provides an API to create notifications, list notifications per logged-in user, and search based on parameters. - -The plugin uses a relational [database](https://backstage.io/docs/getting-started/config/database) for persistence; no specifics are introduced in this context. - -No additional configuration in the app-config is needed, except for optional additional modules for `processors`. - -### Notifications Frontend - -The recipients of notifications have to be entities in the catalog, e.g., of the User or Group kind. - -Otherwise, no specific configuration is needed for the front-end notifications plugin. - -All parametrization is done through component properties, such as the `NotificationsSidebarItem`, which can be used as an active left-side menu item in the front-end. - -![Notifications Page](notificationsPage.png) - -In the `packages/app/src/components/Root/Root.tsx`, tweak the [properties](https://backstage.io/docs/reference/plugin-notifications.notificationssidebaritem) of the `` per specific needs. - -## Use - -New notifications can be sent either by a backend plugin or an external service through the REST API. - -### Backend - -Regardless of technical feasibility, a backend plugin should avoid directly accessing the notifications REST API. -Instead, it should integrate with the `@backstage/plugin-notifications-node` to `send` (create) a new notification. - -The reasons for this approach include the propagation of authorization in the API request and improved maintenance and backward compatibility in the future. - -```ts -import { notificationService } from '@backstage/plugin-notifications-node'; - -export const myPlugin = createBackendPlugin({ - pluginId: 'myPlugin', - register(env) { - env.registerInit({ - deps: { - // ... - notificationService: notificationService, - }, - async init({ config, logger, httpRouter, notificationService }) { - httpRouter.use( - await createRouter({ - // ... - notificationService, - }), - ); - }, - }); - }, -}); -``` - -To emit a new notification: - -```ts -notificationService.send({ - recipients /* of the broadcast or entity type */, - payload /* actual message */, -}); -``` - -Refer the [API documentation](https://github.com/backstage/backstage/blob/master/plugins/notifications-node/report.api.md) for further details. - -### Signals - -The use of signals with notifications is optional but generally enhances user experience and performance. - -When a notification is created, a new signal is emitted to a general-purpose message bus to announce it to subscribed listeners. - -The frontend maintains a persistent connection (WebSocket) to receive these announcements from the notifications channel. -The specific details of the updated or created notification should be retrieved via a request to the notifications API, except for new notifications, where the payload is included in the signal for performance reasons. - -In a frontend plugin, to subscribe for notifications' signals: - -```ts -import { useSignal } from '@backstage/plugin-signals-react'; - -const { lastSignal } = useSignal('notifications'); - -React.useEffect(() => { - /* ... */ -}, [lastSignal, notificationsApi]); -``` - -#### Using signals in your own plugin - -It's possible to use signals in your own plugin to deliver data from the backend to the frontend in near real-time. - -To use signals in your own frontend plugin, you need to add the `useSignal` hook from `@backstage/plugin-signals-react` from `@backstage/plugin-notifications-common` with optional generic type of the signal. - -```ts -// To use the same type of signal in the backend, this should be placed in a shared common package -export type MySignalType = { - user: string; - data: string; - // .... -}; - -const { lastSignal } = useSignal('my-plugin'); - -useEffect(() => { - if (lastSignal) { - // Do something with the signal - } -}, [lastSignal]); -``` - -To send signals from the backend plugin, you must add the `signalsServiceRef` to your plugin or module as a dependency. - -```ts -import { signalsServiceRef } from '@backstage/plugin-signals-node'; -export const myPlugin = createBackendPlugin({ - pluginId: 'my', - register(env) { - env.registerInit({ - deps: { - httpRouter: coreServices.httpRouter, - signals: signalsServiceRef, - }, - async init({ httpRouter, signals }) { - httpRouter.use( - await createRouter({ - signals, - }), - ); - }, - }); - }, -}); -``` - -To send the signal using the service, you can use the `publish` method. - -```ts -signals.publish({ user: 'user', data: 'test' }); -``` - -### Consuming Notifications - -In a front-end plugin, the simplest way to query a notification is by its ID: - -```ts -import { useApi } from '@backstage/core-plugin-api'; -import { notificationsApiRef } from '@backstage/plugin-notifications'; - -const notificationsApi = useApi(notificationsApiRef); - -notificationsApi.getNotification(yourId); - -// or with connection to signals: -notificationsApi.getNotification(lastSignal.notification_id); -``` - -### Extending Notifications via Processors - -The notifications can be extended with `NotificationProcessor`. These processors allow to decorate notifications before they are sent or/and send the notifications to external services. - -Depending on the needs, a processor can modify the content of a notification or route it to different systems like email, Slack, or other services. - -A good example of how to write a processor is the [Email Processor](https://github.com/backstage/backstage/tree/master/plugins/notifications-backend-module-email). - -Start off by creating a notification processor: - -```ts -import { Notification } from '@backstage/plugin-notifications-common'; -import { NotificationProcessor } from '@backstage/plugin-notifications-node'; - -class MyNotificationProcessor implements NotificationProcessor { - // preProcess is called before the notification is saved to database. - // This is a good place to modify the notification before it is saved and sent to the user. - async preProcess(notification: Notification): Promise { - if (notification.origin === 'plugin-my-plugin') { - notification.payload.icon = 'my-icon'; - } - return notification; - } - - // postProcess is called after the notification is saved to database and the signal is emitted. - // This is a good place to send the notification to external services. - async postProcess(notification: Notification): Promise { - nodemailer.sendEmail({ - from: 'backstage', - to: 'user', - subject: notification.payload.title, - text: notification.payload.description, - }); - } -} -``` - -Both of the processing functions are optional, and you can implement only one of them. - -Add the notification processor to the notification system by: - -```ts -import { notificationsProcessingExtensionPoint } from '@backstage/plugin-notifications-node'; -import { Notification } from '@backstage/plugin-notifications-common'; - -export const myPlugin = createBackendPlugin({ - pluginId: 'myPlugin', - register(env) { - env.registerInit({ - deps: { - notifications: notificationsProcessingExtensionPoint, - // ... - }, - async init({ notifications }) { - // ... - notifications.addProcessor(new MyNotificationProcessor()); - }, - }); - }, -}); -``` - ### User-specific notification settings The notifications plugin provides a way for users to manage their notification settings. To enable this, you must @@ -375,19 +155,6 @@ You can customize the origin names shown in the UI by passing an object where th Each notification processor will receive its own column in the settings page, where the user can enable or disable notifications from that processor. -### External Services - -When the emitter of a notification is a Backstage backend plugin, it is mandatory to use the integration via `@backstage/plugin-notifications-node` as described above. - -If the emitter is a service external to Backstage, an HTTP POST request can be issued directly to the API, assuming that authentication is properly configured. -Refer to the [service-to-service auth documentation](https://backstage.io/docs/auth/service-to-service-auth) for more details, focusing on the Static Tokens section for the simplest setup option. - -An example request for creating a broadcast notification might look like: - -```bash -curl -X POST https://[BACKSTAGE_BACKEND]/api/notifications/notifications -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_BASE64_SHARED_KEY_TOKEN" -d '{"recipients":{"type":"broadcast"},"payload": {"title": "Title of broadcast message","link": "http://foo.com/bar","severity": "high","topic": "The topic"}}' -``` - ## Additional info An example of a backend plugin sending notifications can be found in https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-notifications. @@ -395,9 +162,10 @@ An example of a backend plugin sending notifications can be found in https://git Sources of the notifications and signal plugins: - https://github.com/backstage/backstage/blob/master/plugins/notifications - - https://github.com/backstage/backstage/blob/master/plugins/notifications-backend - +- https://github.com/backstage/backstage/blob/master/plugins/notifications-common - https://github.com/backstage/backstage/blob/master/plugins/notifications-node - +- https://github.com/backstage/backstage/blob/master/plugins/signals-backend +- https://github.com/backstage/backstage/blob/master/plugins/signals +- https://github.com/backstage/backstage/blob/master/plugins/signals-node - https://github.com/backstage/backstage/blob/master/plugins/signals-react diff --git a/docs/notifications/processors.md b/docs/notifications/processors.md new file mode 100644 index 0000000000..abee7c97c3 --- /dev/null +++ b/docs/notifications/processors.md @@ -0,0 +1,107 @@ +--- +id: processors +title: Processors +description: How to setup notification processors +--- + +Notifications can be extended with `NotificationProcessor`. These processors allow you to decorate notifications before they are sent and/or send the notifications to external services. + +Depending on your needs, a processor can modify the content of a notification or route it to different systems like email, Slack, or other services. + +A good example of how to write a processor is the [Email Processor](https://github.com/backstage/backstage/tree/master/plugins/notifications-backend-module-email). + +Start off by creating a notification processor: + +```ts +import { Notification } from '@backstage/plugin-notifications-common'; +import { NotificationProcessor } from '@backstage/plugin-notifications-node'; + +class MyNotificationProcessor implements NotificationProcessor { + // preProcess is called before the notification is saved to database. + // This is a good place to modify the notification before it is saved and sent to the user. + async preProcess(notification: Notification): Promise { + if (notification.origin === 'plugin-my-plugin') { + notification.payload.icon = 'my-icon'; + } + return notification; + } + + // postProcess is called after the notification is saved to database and the signal is emitted. + // This is a good place to send the notification to external services. + async postProcess(notification: Notification): Promise { + nodemailer.sendEmail({ + from: 'backstage', + to: 'user', + subject: notification.payload.title, + text: notification.payload.description, + }); + } +} +``` + +Both of the processing functions are optional, and you can just implement one of them. + +Add the notification processor to the notification system by: + +```ts +import { notificationsProcessingExtensionPoint } from '@backstage/plugin-notifications-node'; +import { Notification } from '@backstage/plugin-notifications-common'; + +export const myPlugin = createBackendPlugin({ + pluginId: 'myPlugin', + register(env) { + env.registerInit({ + deps: { + notifications: notificationsProcessingExtensionPoint, + // ... + }, + async init({ notifications }) { + // ... + notifications.addProcessor(new MyNotificationProcessor()); + }, + }); + }, +}); +``` + +## Built-in Processors + +Backstage comes with some processors that can be used immediately. + +### Email Processor + +Email processor is used to send notifications to users using email. To install the email processor, add the `@backstage/plugin-notifications-backend-module-email` package to your backend. + +```bash +yarn workspace backend add @backstage/plugin-notifications-backend-module-email +``` + +Add the email processor to your backend: + +```ts +import { createBackend } from '@backstage/plugin-notifications-backend'; +const backend = createBackend(); +// ... +backend.add(import('@backstage/plugin-notifications-backend-module-email')); +``` + +To configure the email processor, you need to add the following configuration to your `app-config.yaml`: + +```yaml +notifications: + email: + smtp: + host: smtp.example.com + port: 587 + secure: false + username: ${SMTP_USERNAME} + password: ${SMTP_PASSWORD} +``` + +Apart from STMP, the email processor also supports the following transmissions: + +- SES +- sendmail +- stream (only for debugging purposes) + +See more information at https://github.com/backstage/backstage/blob/master/plugins/notifications-backend-module-email/README.md diff --git a/docs/notifications/usage.md b/docs/notifications/usage.md new file mode 100644 index 0000000000..59fbd83e3b --- /dev/null +++ b/docs/notifications/usage.md @@ -0,0 +1,212 @@ +--- +id: usage +title: Usage +description: How to use the notifications and signals +--- + +## Notifications Backend + +The Notifications backend plugin provides an API to create notifications, list notifications per logged-in user, and search based on parameters. + +The plugin uses a relational [database](https://backstage.io/docs/getting-started/config/database) for persistence; no specifics are introduced in this context. + +No additional configuration in the app-config is needed, except for optional additional modules for `processors`. + +## Notifications Frontend + +The recipients of notifications have to be entities in the catalog, e.g., of the User or Group kind. + +Otherwise, no specific configuration is needed for the front-end notifications plugin. + +All parametrization is done through component properties, such as the `NotificationsSidebarItem`, which can be used as an active left-side menu item in the front-end. + +![Notifications Page](notificationsPage.png) + +In the `packages/app/src/components/Root/Root.tsx`, tweak the [properties](https://backstage.io/docs/reference/plugin-notifications.notificationssidebaritem) of the `` per specific needs. + +## Usage + +New notifications can be sent either by a backend plugin or an external service through the REST API. + +## Backend + +Regardless of technical feasibility, a backend plugin should avoid directly accessing the notifications REST API. +Instead, it should integrate with the `@backstage/plugin-notifications-node` to `send` (create) a new notification. + +The reasons for this approach include the propagation of authorization in the API request and improved maintenance and backward compatibility in the future. + +```ts +import { notificationService } from '@backstage/plugin-notifications-node'; + +export const myPlugin = createBackendPlugin({ + pluginId: 'myPlugin', + register(env) { + env.registerInit({ + deps: { + // ... + notificationService: notificationService, + }, + async init({ + // ... + notificationService, + }) { + httpRouter.use( + await createRouter({ + // ... + notificationService, + }), + ); + }, + }); + }, +}); +``` + +To emit a new notification: + +```ts +await notificationService.send({ + recipients /* of the broadcast or entity type */, + payload /* actual message */, +}); +``` + +Refer the [API documentation](https://github.com/backstage/backstage/blob/master/plugins/notifications-node/report.api.md) for further details. + +### External Services + +When the emitter of a notification is a Backstage backend plugin, it is mandatory to use the integration via `@backstage/plugin-notifications-node` as described above. + +If the emitter is a service external to Backstage, an HTTP POST request can be issued directly to the API, assuming that authentication is properly configured. +Refer to the [service-to-service auth documentation](https://backstage.io/docs/auth/service-to-service-auth) for more details, focusing on the Static Tokens section for the simplest setup option. + +An example request for creating a broadcast notification might look like: + +```bash +curl -X POST https://[BACKSTAGE_BACKEND]/api/notifications -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_BASE64_SHARED_KEY_TOKEN" -d '{"recipients":{"type":"broadcast"},"payload": {"title": "Title of broadcast message","link": "http://foo.com/bar","severity": "high","topic": "The topic"}}' +``` + +### Scaffolder Templates + +You can use the `@backstage/plugin-scaffolder-backend-module-notifications` to send notifications when scaffolder templates are run. To install the module, add it to your backend plugin: + +```bash +yarn workspace backend add @backstage/plugin-scaffolder-backend-module-notifications +``` + +Then, add the module to your backend: + +```ts +const backend = createBackend(); +// ... +backend.add( + import('@backstage/plugin-scaffolder-backend-module-notifications'), +); +``` + +In your template you can now use `notification:send` action as part of the steps: + +```yaml +steps: + - id: notify + name: Notify + action: notification:send + input: + recipients: entity + entityRefs: + - component:default/backstage + title: 'Template executed' + info: 'Your template has been executed' + severity: 'info' + link: https://backstage.io +``` + +## Signals + +The use of signals with notifications is optional but generally enhances user experience and performance. + +When a notification is created, a new signal is emitted to a general-purpose message bus to announce it to subscribed listeners. + +The frontend maintains a persistent connection (WebSocket) to receive these announcements from the notifications channel. +The specific details of the updated or created notification should be retrieved via a request to the notifications API, except for new notifications, where the payload is included in the signal for performance reasons. + +In a frontend plugin, to subscribe to notifications' signals: + +```ts +import { useSignal } from '@backstage/plugin-signals-react'; + +const { lastSignal } = useSignal('notifications'); + +React.useEffect(() => { + /* ... */ +}, [lastSignal, notificationsApi]); +``` + +#### Using signals in your own plugin + +It's possible to use signals in your own plugin to deliver data from the backend to the frontend in near real-time. + +To use signals in your own frontend plugin, you need to add the `useSignal` hook from `@backstage/plugin-signals-react` from `@backstage/plugin-notifications-common` with optional generic type of the signal. + +```ts +// To use the same type of signal in the backend, this should be placed in a shared common package +export type MySignalType = { + user: string; + data: string; + // .... +}; + +const { lastSignal } = useSignal('my-plugin'); + +useEffect(() => { + if (lastSignal) { + // Do something with the signal + } +}, [lastSignal]); +``` + +To send signals from the backend plugin, you must add the `signalsServiceRef` to your plugin or module as a dependency. + +```ts +import { signalsServiceRef } from '@backstage/plugin-signals-node'; +export const myPlugin = createBackendPlugin({ + pluginId: 'my', + register(env) { + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + signals: signalsServiceRef, + }, + async init({ httpRouter, signals }) { + httpRouter.use( + await createRouter({ + signals, + }), + ); + }, + }); + }, +}); +``` + +To send the signal using the service, you can use the `publish` method. + +```ts +signals.publish({ user: 'user', data: 'test' }); +``` + +## Consuming Notifications + +In a front-end plugin, the simplest way to query a notification is by its ID: + +```ts +import { useApi } from '@backstage/core-plugin-api'; +import { notificationsApiRef } from '@backstage/plugin-notifications'; + +const notificationsApi = useApi(notificationsApiRef); + +notificationsApi.getNotification(yourId); + +// or with connection to signals: +notificationsApi.getNotification(lastSignal.notification_id); +``` diff --git a/docs/plugins/analytics.md b/docs/plugins/analytics.md index 43636c8a0e..0a6bac81a0 100644 --- a/docs/plugins/analytics.md +++ b/docs/plugins/analytics.md @@ -51,7 +51,7 @@ learn how to contribute the integration yourself! [ga4]: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-ga4/README.md [newrelic-browser]: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-newrelic-browser/README.md [qm]: https://github.com/quantummetric/analytics-module-qm/blob/main/README.md -[matomo]: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/README.md +[matomo]: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-matomo/README.md [add-tool]: https://github.com/backstage/backstage/issues/new?assignees=&labels=plugin&template=plugin_template.md&title=%5BAnalytics+Module%5D+THE+ANALYTICS+TOOL+TO+INTEGRATE [int-howto]: #writing-integrations [analytics-api-type]: https://backstage.io/docs/reference/core-plugin-api.analyticsapi diff --git a/docs/releases/v1.35.0-next.0-changelog.md b/docs/releases/v1.35.0-next.0-changelog.md new file mode 100644 index 0000000000..5c912ebce1 --- /dev/null +++ b/docs/releases/v1.35.0-next.0-changelog.md @@ -0,0 +1,1592 @@ +# Release v1.35.0-next.0 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.35.0-next.0](https://backstage.github.io/upgrade-helper/?to=1.35.0-next.0) + +## @backstage/backend-defaults@0.7.0-next.0 + +### Minor Changes + +- ec547b8: Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. + + If you were using the standard `MiddlewareFactory` just to put an `error` middleware in you router, you can now remove that at your earliest convenience since it's redundant. If you have custom error handlers in your plugin router, those will continue to function as previously. If you were relying on thrown errors propagating all the way down to the root HTTP router, you will find that they no longer do that, and may want to hoist your error handling up to the plugin level instead. + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- 8ecf8cb: Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend@1.30.0-next.0 + +### Minor Changes + +- dd515e3: Removed the long-deprecated `DefaultCatalogCollatorFactory` and `DefaultCatalogCollatorFactoryOptions` exports, which now no longer exist in the search plugin's offerings. If you were using these, you want to migrate to [the new backend system](https://backstage.io/docs/backend-system/) and use the [catalog collator](https://backstage.io/docs/features/search/collators#catalog) directly. + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- be0aae7: Improved concurrency of the `entities` endpoint when using the streamed query mode behind the `catalog.disableRelationsCompatibility` flag. +- 3d475a0: Updated condition in `resolveCodeOwner` to fix a bug where `normalizeCodeOwner` could potentially be called with an invalid argument causing an error in `CodeOwnersProcessor` +- Updated dependencies + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-scaffolder-backend@1.29.0-next.0 + +### Minor Changes + +- 5d9e5c8: Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.6-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + +### Minor Changes + +- dd515e3: **BREAKING**: Removed support for the old backend system. Please [migrate to the new backend system](https://backstage.io/docs/backend-system/) and enable [the catalog collator](https://backstage.io/docs/features/search/collators#catalog) there. + + As part of this, the `/alpha` export path is gone too. Just import the module from the root of the package as usual instead. + +### Patch Changes + +- 1e09b06: Internal refactor to use cursor based pagination +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/backend-app-api@1.1.1-next.0 + +### Patch Changes + +- 02534c7: Corrected spelling mistake in error message +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/backend-dynamic-feature-service@0.5.3-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-app-node@0.1.29-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/backend-openapi-utils@0.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/backend-plugin-api@1.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/backend-test-utils@1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/cli@0.29.5-next.0 + +### Patch Changes + +- e937ce0: Fixed incompatible `@typescript-eslint` versions with current `eslint@8.x.x` +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/eslint-plugin@0.1.10 + - @backstage/integration@1.16.0 + - @backstage/release-manifests@0.0.12 + - @backstage/types@1.2.0 + +## @backstage/config-loader@1.9.5-next.0 + +### Patch Changes + +- 8ecf8cb: Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present +- Updated dependencies + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/create-app@0.5.24-next.0 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.15 + +## @backstage/repo-tools@0.12.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/errors@1.2.6 + +## @techdocs/cli@1.8.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + +## @backstage/plugin-app-backend@0.4.4-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-app-node@0.1.29-next.0 + +## @backstage/plugin-app-node@0.1.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend@0.24.2-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-auth0-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.3.2-next.0 + - @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-google-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-oidc-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-okta-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-onelogin-provider@0.2.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-auth0-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-google-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-okta-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-onelogin-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + +## @backstage/plugin-auth-node@0.5.6-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/plugin-catalog-backend-module-aws@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + +## @backstage/plugin-catalog-backend-module-azure@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-gcp@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.2.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.7.9-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.7.9-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.6.1-next.0 + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.5-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-catalog-backend-module-gitlab@0.6.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.6.2-next.0 + +### Patch Changes + +- ec547b8: Remove the error handler middleware, since that is now provided by the framework +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-catalog-backend-module-ldap@0.11.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-logs@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.6.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.0 + +### Patch Changes + +- 57e794a: Refactor to no longer use backend-common +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.2.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-catalog-unprocessed-entities-common@0.0.6 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-catalog-node@1.15.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-devtools-backend@0.5.1-next.0 + +### Patch Changes + +- ec547b8: Remove the error handler middleware, since that is now provided by the framework +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-devtools-common@0.1.14 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-events-backend@0.4.1-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-aws-sqs@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-azure@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-gerrit@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-github@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-gitlab@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-test-utils@0.1.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-node@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/plugin-home@0.8.4-next.0 + +### Patch Changes + +- 7932f1e: Exported `QuickStartCard` component. +- Updated dependencies + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/theme@0.6.3 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-home-react@0.1.21 + +## @backstage/plugin-kubernetes-backend@0.19.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + - @backstage/plugin-kubernetes-node@0.2.2-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-kubernetes-node@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/types@1.2.0 + - @backstage/plugin-kubernetes-common@0.9.1 + +## @backstage/plugin-notifications-backend@0.5.1-next.0 + +### Patch Changes + +- cbc0e63: Remove `@backstage/backend-common` dependency +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + +## @backstage/plugin-notifications-backend-module-email@0.3.5-next.0 + +### Patch Changes + +- bed5f35: Added more examples of the plugin configuration +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + +## @backstage/plugin-notifications-node@0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-signals-node@0.1.16-next.0 + +## @backstage/plugin-permission-backend@0.5.53-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-permission-node@0.8.7-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-proxy-backend@0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder@1.27.4-next.0 + +### Patch Changes + +- 3f09ef4: Fix issue with `secrets` not being forwarded properly to the backend when creating a task +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/errors@1.2.6 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/integration@1.16.0 + - @backstage/integration-react@1.2.2 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-scaffolder-backend-module-azure@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder-backend-module-gcp@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-gitea@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.4.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/types@1.2.0 + - @backstage/plugin-scaffolder-node-test-utils@0.1.18-next.0 + +## @backstage/plugin-scaffolder-node@0.6.3-next.0 + +### Patch Changes + +- 5d9e5c8: Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. +- 7dd0013: Deprecate the `logStream` option in `executeShellCommand`, replacing it with a logger instance. +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-scaffolder-node-test-utils@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-test-utils@1.2.1-next.0 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder-react@1.14.3-next.0 + +### Patch Changes + +- 37421bc: Fixed scaffolder form fields not resolving correctly in the `useCustomFieldExtensions` hook. +- Updated dependencies + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/theme@0.6.3 + - @backstage/types@1.2.0 + - @backstage/version-bridge@1.0.10 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-search-backend@1.8.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-pg@0.5.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + +## @backstage/plugin-search-backend-node@1.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-signals-backend@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + +## @backstage/plugin-signals-node@0.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-techdocs-backend@1.11.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-techdocs-common@0.1.0 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + +### Patch Changes + +- b664b2a: Internal refactor for safer handling of possible null value. +- Updated dependencies + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/integration@1.16.0 + - @backstage/integration-react@1.2.2 + - @backstage/plugin-techdocs-react@1.2.12 + +## @backstage/plugin-techdocs-node@1.12.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-user-settings-backend@0.2.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + - @backstage/plugin-user-settings-common@0.0.1 + +## example-app@0.2.105-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-devtools@0.1.22 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + +## example-app-next@0.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/frontend-defaults@0.1.4 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-app@0.1.4 + - @backstage/plugin-app-visualizer@0.1.14 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + +## example-backend@0.0.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.0 + - @backstage/plugin-devtools-backend@0.5.1-next.0 + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-notifications-backend@0.5.1-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + +## example-backend-legacy@0.2.106-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.40-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + +## e2e-test@0.2.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.24-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/errors@1.2.6 + +## @internal/scaffolder@0.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/frontend-plugin-api@0.9.3 + +## techdocs-cli-embedded-app@0.2.104-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.29.5-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/integration-react@1.2.2 + - @backstage/test-utils@1.7.3 + - @backstage/theme@0.6.3 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + +## @internal/plugin-todo-list-backend@1.0.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 diff --git a/docs/releases/v1.35.0-next.1-changelog.md b/docs/releases/v1.35.0-next.1-changelog.md new file mode 100644 index 0000000000..c3e89a862b --- /dev/null +++ b/docs/releases/v1.35.0-next.1-changelog.md @@ -0,0 +1,2619 @@ +# Release v1.35.0-next.1 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.35.0-next.1](https://backstage.github.io/upgrade-helper/?to=1.35.0-next.1) + +## @backstage/plugin-catalog-backend-module-gitlab@0.6.2-next.0 + +# @backstage/plugin-catalog-backend-module-gitlab + +## 0.6.1-next.0 + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## 0.6.0 + +### Minor Changes + +- 99dce5c: Implemented discovery for top-level groups defined in config.group or if undefined global top-level group in Gitlab + +### Patch Changes + +- 191e5bf: `restrictUsersToGroup` should use the entire group path when getting members +- 5c9cc05: Use native fetch instead of node-fetch +- Updated dependencies + - @backstage/backend-defaults@0.6.0 + - @backstage/integration@1.16.0 + - @backstage/backend-plugin-api@1.1.0 + - @backstage/plugin-catalog-node@1.15.0 + - @backstage/plugin-events-node@0.4.6 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-common@1.1.2 + +## 0.6.0-next.2 + +### Minor Changes + +- 99dce5c: Implemented discovery for top-level groups defined in config.group or if undefined global top-level group in Gitlab + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.6.0-next.2 + - @backstage/backend-plugin-api@1.1.0-next.2 + - @backstage/plugin-catalog-node@1.15.0-next.2 + - @backstage/plugin-events-node@0.4.6-next.2 + - @backstage/catalog-model@1.7.2-next.0 + - @backstage/config@1.3.1-next.0 + - @backstage/integration@1.16.0-next.1 + - @backstage/plugin-catalog-common@1.1.2-next.0 + +## 0.5.1-next.1 + +### Patch Changes + +- 5c9cc05: Use native fetch instead of node-fetch +- Updated dependencies + - @backstage/backend-defaults@0.6.0-next.1 + - @backstage/plugin-catalog-node@1.15.0-next.1 + - @backstage/backend-plugin-api@1.1.0-next.1 + - @backstage/catalog-model@1.7.1 + - @backstage/config@1.3.0 + - @backstage/integration@1.16.0-next.0 + - @backstage/plugin-catalog-common@1.1.1 + - @backstage/plugin-events-node@0.4.6-next.1 + +## 0.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.6.0-next.0 + - @backstage/integration@1.16.0-next.0 + - @backstage/backend-plugin-api@1.0.3-next.0 + - @backstage/plugin-events-node@0.4.6-next.0 + - @backstage/catalog-model@1.7.1 + - @backstage/config@1.3.0 + - @backstage/plugin-catalog-common@1.1.1 + - @backstage/plugin-catalog-node@1.14.1-next.0 + +## 0.5.0 + +### Minor Changes + +- 1b5fdd9: Extended the configuration with the `includeArchivedRepos` property, which allows including repositories when the project is archived. + +### Patch Changes + +- 4e58bc7: Upgrade to uuid v11 internally +- Updated dependencies + - @backstage/config@1.3.0 + - @backstage/plugin-events-node@0.4.5 + - @backstage/backend-defaults@0.5.3 + - @backstage/plugin-catalog-node@1.14.0 + - @backstage/backend-plugin-api@1.0.2 + - @backstage/catalog-model@1.7.1 + - @backstage/integration@1.15.2 + - @backstage/plugin-catalog-common@1.1.1 + +## 0.5.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.5-next.3 + - @backstage/backend-defaults@0.5.3-next.3 + - @backstage/backend-plugin-api@1.0.2-next.2 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.15.1 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.14.0-next.2 + +## 0.5.0-next.2 + +### Minor Changes + +- 1b5fdd9: Extended the configuration with the `includeArchivedRepos` property, which allows including repositories when the project is archived. + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.3-next.2 + - @backstage/plugin-events-node@0.4.5-next.2 + - @backstage/plugin-catalog-node@1.14.0-next.2 + - @backstage/backend-plugin-api@1.0.2-next.2 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.15.1 + - @backstage/plugin-catalog-common@1.1.0 + +## 0.4.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.3-next.1 + - @backstage/backend-plugin-api@1.0.2-next.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.15.1 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.14.0-next.1 + - @backstage/plugin-events-node@0.4.4-next.1 + +## 0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.3-next.0 + - @backstage/plugin-catalog-node@1.14.0-next.0 + - @backstage/backend-defaults@0.5.3-next.0 + - @backstage/backend-plugin-api@1.0.2-next.0 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.15.1 + - @backstage/plugin-catalog-common@1.1.0 + +## 0.4.3 + +### Patch Changes + +- 3109c24: The export for the new backend system at the `/alpha` export is now also available via the main entry point, which means that you can remove the `/alpha` suffix from the import. +- Updated dependencies + - @backstage/backend-defaults@0.5.1 + - @backstage/plugin-events-node@0.4.1 + - @backstage/plugin-catalog-node@1.13.1 + - @backstage/integration@1.15.1 + - @backstage/backend-plugin-api@1.0.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + +## 0.4.3-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.1-next.2 + - @backstage/plugin-catalog-node@1.13.1-next.1 + - @backstage/integration@1.15.1-next.1 + - @backstage/backend-plugin-api@1.0.1-next.1 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-events-node@0.4.1-next.1 + +## 0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.1-next.1 + - @backstage/integration@1.15.1-next.0 + - @backstage/backend-plugin-api@1.0.1-next.0 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.1-next.0 + - @backstage/plugin-events-node@0.4.1-next.0 + +## 0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.5.1-next.0 + - @backstage/plugin-events-node@0.4.1-next.0 + - @backstage/backend-plugin-api@1.0.1-next.0 + - @backstage/catalog-model@1.7.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.15.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.1-next.0 + +## 0.4.2 + +### Patch Changes + +- 53b24d9: Internal update to use the new cache manager + +- 0476be3: Add the `relations` array to allow Backstage to mirror GitLab's membership behavior, including descendant, inherited, and shared-from-group memberships. + + The previous `allowInherited` config option will be deprecated in future versions. Use the `relations` array with the `INHERITED` option instead. + + ```yaml + catalog: + providers: + gitlab: + development: + relations: + - INHERITED + ``` + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. + +- b446954: Remove dependency on backend-common + +- 06cc084: Added a `includeUsersWithoutSeat` config option that allow import of users without a paid seat, e.g. for Gitlab Free on SaaS. Defaults to false + +- Updated dependencies + - @backstage/backend-defaults@0.5.0 + - @backstage/backend-plugin-api@1.0.0 + - @backstage/catalog-model@1.7.0 + - @backstage/plugin-catalog-common@1.1.0 + - @backstage/plugin-catalog-node@1.13.0 + - @backstage/integration@1.15.0 + - @backstage/plugin-events-node@0.4.0 + - @backstage/config@1.2.0 + +## 0.4.2-next.2 + +### Patch Changes + +- 0476be3: Add the `relations` array to allow Backstage to mirror GitLab's membership behavior, including descendant, inherited, and shared-from-group memberships. + + The previous `allowInherited` config option will be deprecated in future versions. Use the `relations` array with the `INHERITED` option instead. + + ```yaml + catalog: + providers: + gitlab: + development: + relations: + - INHERITED + ``` + +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.2 + - @backstage/backend-plugin-api@1.0.0-next.2 + - @backstage/integration@1.15.0-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.2 + - @backstage/plugin-events-node@0.4.0-next.2 + +## 0.4.2-next.1 + +### Patch Changes + +- 53b24d9: Internal update to use the new cache manager +- Updated dependencies + - @backstage/backend-defaults@0.5.0-next.1 + - @backstage/backend-plugin-api@0.9.0-next.1 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.14.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-catalog-node@1.12.7-next.1 + - @backstage/plugin-events-node@0.4.0-next.1 + +## 0.4.2-next.0 + +### Patch Changes + +- d425fc4: Modules, plugins, and services are now `BackendFeature`, not a function that returns a feature. +- b446954: Remove dependency on backend-common +- Updated dependencies + - @backstage/backend-plugin-api@0.9.0-next.0 + - @backstage/backend-defaults@0.5.0-next.0 + - @backstage/plugin-events-node@0.4.0-next.0 + - @backstage/plugin-catalog-node@1.12.7-next.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.14.0 + - @backstage/plugin-catalog-common@1.0.26 + +## 0.4.0 + +### Minor Changes + +- fc24d9e: Stop using `@backstage/backend-tasks` as it will be deleted in near future. + +### Patch Changes + +- 93095ee: Make sure node-fetch is version 2.7.0 or greater +- c7b14ed: Adds new optional `excludeRepos` configuration option to the Gitlab catalog provider. +- Updated dependencies + - @backstage/backend-plugin-api@0.8.0 + - @backstage/backend-common@0.24.0 + - @backstage/plugin-catalog-node@1.12.5 + - @backstage/integration@1.14.0 + - @backstage/catalog-model@1.6.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.26 + - @backstage/plugin-events-node@0.3.9 + +## 0.3.22-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.8.0-next.3 + - @backstage/backend-common@0.23.4-next.3 + - @backstage/catalog-model@1.6.0-next.0 + - @backstage/backend-tasks@0.5.28-next.3 + - @backstage/config@1.2.0 + - @backstage/integration@1.14.0-next.0 + - @backstage/plugin-catalog-common@1.0.26-next.2 + - @backstage/plugin-catalog-node@1.12.5-next.3 + - @backstage/plugin-events-node@0.3.9-next.3 + +## 0.3.22-next.2 + +### Patch Changes + +- 93095ee: Make sure node-fetch is version 2.7.0 or greater +- Updated dependencies + - @backstage/backend-plugin-api@0.8.0-next.2 + - @backstage/backend-common@0.23.4-next.2 + - @backstage/backend-tasks@0.5.28-next.2 + - @backstage/plugin-catalog-node@1.12.5-next.2 + - @backstage/plugin-events-node@0.3.9-next.2 + - @backstage/plugin-catalog-common@1.0.26-next.1 + - @backstage/integration@1.14.0-next.0 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + +## 0.3.22-next.1 + +### Patch Changes + +- c7b14ed: Adds new optional `excludeRepos` configuration option to the Gitlab catalog provider. +- Updated dependencies + - @backstage/backend-plugin-api@0.7.1-next.1 + - @backstage/backend-common@0.23.4-next.1 + - @backstage/integration@1.14.0-next.0 + - @backstage/plugin-catalog-common@1.0.26-next.0 + - @backstage/plugin-catalog-node@1.12.5-next.1 + - @backstage/backend-tasks@0.5.28-next.1 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + - @backstage/plugin-events-node@0.3.9-next.1 + +## 0.3.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.23.4-next.0 + - @backstage/plugin-catalog-node@1.12.5-next.0 + - @backstage/integration@1.14.0-next.0 + - @backstage/backend-plugin-api@0.7.1-next.0 + - @backstage/backend-tasks@0.5.28-next.0 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.25 + - @backstage/plugin-events-node@0.3.9-next.0 + +## 0.3.21 + +### Patch Changes + +- 8db30ad: The Gitlab configuration supports an additional optional boolean key `catalog.providers.gitlab..restrictUsersToGroup`. Setting this to `true` will make Backstage only import users from the group defined in the `group` key, instead of all users in the organisation (self-hosted) or of the root group (SaaS). It will default to false, keeping the original implementation intact, when not explicitly set. +- Updated dependencies + - @backstage/backend-plugin-api@0.7.0 + - @backstage/backend-common@0.23.3 + - @backstage/backend-tasks@0.5.27 + - @backstage/integration@1.13.0 + - @backstage/plugin-events-node@0.3.8 + - @backstage/plugin-catalog-node@1.12.4 + - @backstage/plugin-catalog-common@1.0.25 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + +## 0.3.21-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.23.3-next.1 + - @backstage/backend-plugin-api@0.6.22-next.1 + - @backstage/backend-tasks@0.5.27-next.1 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.13.0-next.0 + - @backstage/plugin-catalog-common@1.0.24 + - @backstage/plugin-catalog-node@1.12.4-next.1 + - @backstage/plugin-events-node@0.3.8-next.1 + +## 0.3.20-next.0 + +### Patch Changes + +- 8db30ad: The Gitlab configuration supports an additional optional boolean key `catalog.providers.gitlab..restrictUsersToGroup`. Setting this to `true` will make Backstage only import users from the group defined in the `group` key, instead of all users in the organisation (self-hosted) or of the root group (SaaS). It will default to false, keeping the original implementation intact, when not explicitly set. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.21-next.0 + - @backstage/backend-common@0.23.2-next.0 + - @backstage/backend-tasks@0.5.26-next.0 + - @backstage/integration@1.13.0-next.0 + - @backstage/plugin-catalog-node@1.12.3-next.0 + - @backstage/plugin-events-node@0.3.7-next.0 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.24 + +## 0.3.18 + +### Patch Changes + +- 78a0b08: Internal refactor to handle `BackendFeature` contract change. +- d44a20a: Added additional plugin metadata to `package.json`. +- 150fc77: Fixed an issue in `GitlabOrgDiscoveryEntityProvider` where a missing `orgEnabled` config key was throwing an error. +- f271164: Fixed an issue in `GitlabDiscoveryEntityProvider` where the fallback branch was taking precedence over the GitLab default branch. +- Updated dependencies + - @backstage/backend-common@0.23.0 + - @backstage/backend-plugin-api@0.6.19 + - @backstage/backend-tasks@0.5.24 + - @backstage/integration@1.12.0 + - @backstage/plugin-catalog-node@1.12.1 + - @backstage/plugin-events-node@0.3.5 + - @backstage/plugin-catalog-common@1.0.24 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + +## 0.3.18-next.3 + +### Patch Changes + +- d44a20a: Added additional plugin metadata to `package.json`. +- Updated dependencies + - @backstage/backend-plugin-api@0.6.19-next.3 + - @backstage/integration@1.12.0-next.1 + - @backstage/plugin-catalog-common@1.0.24-next.0 + - @backstage/plugin-catalog-node@1.12.1-next.2 + - @backstage/plugin-events-node@0.3.5-next.2 + - @backstage/backend-tasks@0.5.24-next.3 + - @backstage/backend-common@0.23.0-next.3 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + +## 0.3.18-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.19-next.2 + - @backstage/backend-common@0.23.0-next.2 + - @backstage/integration@1.12.0-next.0 + - @backstage/backend-tasks@0.5.24-next.2 + - @backstage/plugin-catalog-node@1.12.1-next.1 + - @backstage/plugin-events-node@0.3.5-next.1 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-common@1.0.23 + +## 0.3.17-next.1 + +### Patch Changes + +- 150fc77: Fixed an issue in `GitlabOrgDiscoveryEntityProvider` where a missing `orgEnabled` config key was throwing an error. +- f271164: Fixed an issue in `GitlabDiscoveryEntityProvider` where the fallback branch was taking precedence over the GitLab default branch. +- Updated dependencies + - @backstage/backend-tasks@0.5.24-next.1 + - @backstage/backend-plugin-api@0.6.19-next.1 + - @backstage/backend-common@0.23.0-next.1 + - @backstage/plugin-catalog-node@1.12.1-next.0 + - @backstage/plugin-events-node@0.3.5-next.0 + +## 0.3.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.24-next.0 + - @backstage/backend-common@0.22.1-next.0 + - @backstage/plugin-events-node@0.3.5-next.0 + - @backstage/backend-plugin-api@0.6.19-next.0 + - @backstage/plugin-catalog-node@1.12.1-next.0 + - @backstage/catalog-model@1.5.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.11.0 + - @backstage/plugin-catalog-common@1.0.23 + +## 0.3.16 + +### Patch Changes + +- a70377d: Added events support for `GitlabDiscoveryEntityProvider` and `GitlabOrgDiscoveryEntityProvider`. +- Updated dependencies + - @backstage/plugin-catalog-node@1.12.0 + - @backstage/catalog-model@1.5.0 + - @backstage/backend-common@0.22.0 + - @backstage/backend-plugin-api@0.6.18 + - @backstage/backend-tasks@0.5.23 + - @backstage/plugin-events-node@0.3.4 + - @backstage/integration@1.11.0 + - @backstage/plugin-catalog-common@1.0.23 + +## 0.3.15-next.4 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.12.0-next.2 + - @backstage/backend-common@0.22.0-next.2 + - @backstage/plugin-events-node@0.3.4-next.2 + - @backstage/integration@1.11.0-next.0 + +## 0.3.15-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.22.0-next.1 + - @backstage/backend-tasks@0.5.23-next.1 + - @backstage/plugin-events-node@0.3.4-next.1 + - @backstage/plugin-catalog-node@1.11.2-next.1 + - @backstage/backend-plugin-api@0.6.18-next.1 + +## 0.3.15-next.2 + +### Patch Changes + +- a70377d: Added events support for `GitlabDiscoveryEntityProvider` and `GitlabOrgDiscoveryEntityProvider`. +- Updated dependencies + - @backstage/catalog-model@1.5.0-next.0 + - @backstage/backend-common@0.21.8-next.0 + - @backstage/backend-plugin-api@0.6.18-next.0 + - @backstage/plugin-catalog-common@1.0.23-next.0 + - @backstage/plugin-catalog-node@1.11.2-next.0 + - @backstage/backend-tasks@0.5.23-next.0 + - @backstage/config@1.2.0 + - @backstage/integration@1.10.0 + - @backstage/plugin-events-node@0.3.4-next.0 + +## 0.3.15 + +### Patch Changes + +- d5a1fe1: Replaced winston logger with `LoggerService` +- Updated dependencies + - @backstage/backend-common@0.21.7 + - @backstage/backend-plugin-api@0.6.17 + - @backstage/backend-tasks@0.5.22 + - @backstage/integration@1.10.0 + - @backstage/plugin-catalog-node@1.11.1 + - @backstage/catalog-model@1.4.5 + - @backstage/config@1.2.0 + +## 0.3.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.7-next.1 + - @backstage/backend-plugin-api@0.6.17-next.1 + - @backstage/backend-tasks@0.5.22-next.1 + - @backstage/catalog-model@1.4.5 + - @backstage/config@1.2.0 + - @backstage/integration@1.10.0-next.0 + - @backstage/plugin-catalog-node@1.11.1-next.1 + +## 0.3.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.7-next.0 + - @backstage/integration@1.10.0-next.0 + - @backstage/backend-plugin-api@0.6.17-next.0 + - @backstage/backend-tasks@0.5.22-next.0 + - @backstage/catalog-model@1.4.5 + - @backstage/config@1.2.0 + - @backstage/plugin-catalog-node@1.11.1-next.0 + +## 0.3.14 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.11.0 + - @backstage/backend-common@0.21.6 + - @backstage/backend-plugin-api@0.6.16 + - @backstage/backend-tasks@0.5.21 + - @backstage/catalog-model@1.4.5 + - @backstage/config@1.2.0 + - @backstage/integration@1.9.1 + +## 0.3.13 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.10.0 + - @backstage/backend-common@0.21.5 + - @backstage/backend-tasks@0.5.20 + - @backstage/backend-plugin-api@0.6.15 + - @backstage/catalog-model@1.4.5 + - @backstage/config@1.2.0 + - @backstage/integration@1.9.1 + +## 0.3.12 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.9.0 + +## 0.3.11 + +### Patch Changes + +- 0fb419b: Updated dependency `uuid` to `^9.0.0`. + Updated dependency `@types/uuid` to `^9.0.0`. +- 9f5b8bc: Add GitLab `visibility` to group entity annotations. +- Updated dependencies + - @backstage/backend-common@0.21.4 + - @backstage/integration@1.9.1 + - @backstage/config@1.2.0 + - @backstage/backend-plugin-api@0.6.14 + - @backstage/plugin-catalog-node@1.8.0 + - @backstage/backend-tasks@0.5.19 + - @backstage/catalog-model@1.4.5 + +## 0.3.11-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.9.1-next.2 + - @backstage/backend-common@0.21.4-next.2 + - @backstage/plugin-catalog-node@1.8.0-next.2 + - @backstage/backend-plugin-api@0.6.14-next.2 + - @backstage/backend-tasks@0.5.19-next.2 + - @backstage/catalog-model@1.4.5-next.0 + - @backstage/config@1.2.0-next.1 + +## 0.3.11-next.1 + +### Patch Changes + +- 9f5b8bc: Add GitLab `visibility` to group entity annotations. +- Updated dependencies + - @backstage/config@1.2.0-next.1 + - @backstage/backend-common@0.21.4-next.1 + - @backstage/backend-plugin-api@0.6.14-next.1 + - @backstage/backend-tasks@0.5.19-next.1 + - @backstage/integration@1.9.1-next.1 + - @backstage/catalog-model@1.4.5-next.0 + - @backstage/plugin-catalog-node@1.8.0-next.1 + +## 0.3.10-next.0 + +### Patch Changes + +- 0fb419b: Updated dependency `uuid` to `^9.0.0`. + Updated dependency `@types/uuid` to `^9.0.0`. +- Updated dependencies + - @backstage/backend-common@0.21.3-next.0 + - @backstage/backend-plugin-api@0.6.13-next.0 + - @backstage/plugin-catalog-node@1.8.0-next.0 + - @backstage/backend-tasks@0.5.18-next.0 + - @backstage/catalog-model@1.4.5-next.0 + - @backstage/config@1.1.2-next.0 + - @backstage/integration@1.9.1-next.0 + +## 0.3.7 + +### Patch Changes + +- 60e4c2a: Added the option to provide custom `groupTransformer`, `userTransformer` and `groupNameTransformer` to allow custom transformations of groups and users +- Updated dependencies + - @backstage/backend-common@0.21.0 + - @backstage/backend-plugin-api@0.6.10 + - @backstage/backend-tasks@0.5.15 + - @backstage/catalog-model@1.4.4 + - @backstage/integration@1.9.0 + - @backstage/plugin-catalog-node@1.7.0 + - @backstage/config@1.1.1 + +## 0.3.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.3 + - @backstage/integration@1.9.0-next.1 + - @backstage/backend-tasks@0.5.15-next.3 + - @backstage/plugin-catalog-node@1.6.2-next.3 + - @backstage/backend-plugin-api@0.6.10-next.3 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/config@1.1.1 + +## 0.3.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.21.0-next.2 + - @backstage/backend-plugin-api@0.6.10-next.2 + - @backstage/backend-tasks@0.5.15-next.2 + - @backstage/plugin-catalog-node@1.6.2-next.2 + - @backstage/config@1.1.1 + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/integration@1.9.0-next.0 + +## 0.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.4-next.0 + - @backstage/backend-plugin-api@0.6.10-next.1 + - @backstage/backend-common@0.21.0-next.1 + - @backstage/integration@1.9.0-next.0 + - @backstage/backend-tasks@0.5.15-next.1 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.6.2-next.1 + +## 0.3.7-next.0 + +### Patch Changes + +- 60e4c2a: Added the option to provide custom `groupTransformer`, `userTransformer` and `groupNameTransformer` to allow custom transformations of groups and users +- Updated dependencies + - @backstage/backend-common@0.21.0-next.0 + - @backstage/backend-tasks@0.5.15-next.0 + - @backstage/plugin-catalog-node@1.6.2-next.0 + - @backstage/backend-plugin-api@0.6.10-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + +## 0.3.6 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.1 + - @backstage/backend-plugin-api@0.6.9 + - @backstage/plugin-catalog-node@1.6.1 + - @backstage/backend-tasks@0.5.14 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + +## 0.3.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.9-next.2 + - @backstage/backend-common@0.20.1-next.2 + - @backstage/plugin-catalog-node@1.6.1-next.2 + - @backstage/backend-tasks@0.5.14-next.2 + +## 0.3.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.1-next.1 + - @backstage/integration@1.8.0 + - @backstage/config@1.1.1 + - @backstage/backend-tasks@0.5.14-next.1 + - @backstage/backend-plugin-api@0.6.9-next.1 + - @backstage/catalog-model@1.4.3 + - @backstage/plugin-catalog-node@1.6.1-next.1 + +## 0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.1-next.0 + - @backstage/plugin-catalog-node@1.6.1-next.0 + - @backstage/backend-plugin-api@0.6.9-next.0 + - @backstage/backend-tasks@0.5.14-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0 + +## 0.3.5 + +### Patch Changes + +- cc4228e: Switched module ID to use kebab-case. +- Updated dependencies + - @backstage/backend-common@0.20.0 + - @backstage/plugin-catalog-node@1.6.0 + - @backstage/backend-tasks@0.5.13 + - @backstage/integration@1.8.0 + - @backstage/backend-plugin-api@0.6.8 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## 0.3.5-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.0-next.3 + - @backstage/backend-plugin-api@0.6.8-next.3 + - @backstage/backend-tasks@0.5.13-next.3 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0-next.1 + - @backstage/plugin-catalog-node@1.6.0-next.3 + +## 0.3.5-next.2 + +### Patch Changes + +- cc4228e: Switched module ID to use kebab-case. +- Updated dependencies + - @backstage/plugin-catalog-node@1.6.0-next.2 + - @backstage/backend-common@0.20.0-next.2 + - @backstage/backend-plugin-api@0.6.8-next.2 + - @backstage/backend-tasks@0.5.13-next.2 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/integration@1.8.0-next.1 + +## 0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.8.0-next.1 + - @backstage/backend-common@0.20.0-next.1 + - @backstage/backend-plugin-api@0.6.8-next.1 + - @backstage/backend-tasks@0.5.13-next.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.5.1-next.1 + +## 0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.20.0-next.0 + - @backstage/backend-tasks@0.5.13-next.0 + - @backstage/integration@1.8.0-next.0 + - @backstage/plugin-catalog-node@1.5.1-next.0 + - @backstage/backend-plugin-api@0.6.8-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## 0.3.4 + +### Patch Changes + +- d732f17610: Added try catch around fetching gitlab group users to prevent refresh from failing completely while only a select number of groups might not be able to load correctly. +- 0873a43ac1: Resolved a bug affecting the retrieval of users from group members. By appending '/all' to the API call, we now include members from all inherited groups, as per Gitlab's API specifications. This change is reflected in the listSaaSUsers function. +- Updated dependencies + - @backstage/plugin-catalog-node@1.5.0 + - @backstage/integration@1.7.2 + - @backstage/backend-common@0.19.9 + - @backstage/backend-plugin-api@0.6.7 + - @backstage/backend-tasks@0.5.12 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## 0.3.4-next.2 + +### Patch Changes + +- [#20893](https://github.com/backstage/backstage/pull/20893) [`0873a43ac1`](https://github.com/backstage/backstage/commit/0873a43ac1557901b21dfa6f8534bbbfc73dc444) Thanks [@pushit-tech](https://github.com/pushit-tech)! - Resolved a bug affecting the retrieval of users from group members. By appending '/all' to the API call, we now include members from all inherited groups, as per Gitlab's API specifications. This change is reflected in the listSaaSUsers function. + +- Updated dependencies + - @backstage/backend-plugin-api@0.6.7-next.2 + - @backstage/backend-common@0.19.9-next.2 + - @backstage/backend-tasks@0.5.12-next.2 + - @backstage/plugin-catalog-node@1.5.0-next.2 + +## 0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.5.0-next.1 + - @backstage/integration@1.7.2-next.0 + - @backstage/backend-common@0.19.9-next.1 + - @backstage/backend-tasks@0.5.12-next.1 + - @backstage/backend-plugin-api@0.6.7-next.1 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + +## 0.3.4-next.0 + +### Patch Changes + +- d732f17610: Added try catch around fetching gitlab group users to prevent refresh from failing completely while only a select number of groups might not be able to load correctly. +- Updated dependencies + - @backstage/backend-common@0.19.9-next.0 + - @backstage/integration@1.7.1 + - @backstage/backend-plugin-api@0.6.7-next.0 + - @backstage/backend-tasks@0.5.12-next.0 + - @backstage/catalog-model@1.4.3 + - @backstage/config@1.1.1 + - @backstage/plugin-catalog-node@1.4.8-next.0 + +## 0.3.3 + +### Patch Changes + +- 4f70fdfc93: fix: use REST API to get root group memberships for GitLab SaaS users listing + + This API is the only one that shows `email` field for enterprise users and + allows to filter out bot users not using a license using the `is_using_seat` + field. + + We also added the annotation `gitlab.com/saml-external-uid` taking the value + of `group_saml_identity.extern_uid` of the `groups/:group-id/members` endpoint + response. This is useful in case you want to create a `SignInResolver` that + references the user with the id of your identity provider (e.g. OneLogin). + + ref: + + + + +- 890e3b5ad4: Make sure to include the error message when ingestion fails + +- 0b55f773a7: Removed some unused dependencies + +- 6ae7f12abb: Make sure the archived projects are skipped with the Gitlab API + +- Updated dependencies + - @backstage/backend-tasks@0.5.11 + - @backstage/backend-common@0.19.8 + - @backstage/integration@1.7.1 + - @backstage/plugin-catalog-node@1.4.7 + - @backstage/catalog-model@1.4.3 + - @backstage/backend-plugin-api@0.6.6 + - @backstage/config@1.1.1 + +## 0.3.3-next.2 + +### Patch Changes + +- 4f70fdfc93: fix: use REST API to get root group memberships for GitLab SaaS users listing + + This API is the only one that shows `email` field for enterprise users and + allows to filter out bot users not using a license using the `is_using_seat` + field. + + We also added the annotation `gitlab.com/saml-external-uid` taking the value + of `group_saml_identity.extern_uid` of the `groups/:group-id/members` endpoint + response. This is useful in case you want to create a `SignInResolver` that + references the user with the id of your identity provider (e.g. OneLogin). + + ref: + + + + +- 0b55f773a7: Removed some unused dependencies + +- Updated dependencies + - @backstage/backend-common@0.19.8-next.2 + - @backstage/catalog-model@1.4.3-next.0 + - @backstage/integration@1.7.1-next.1 + - @backstage/backend-tasks@0.5.11-next.2 + - @backstage/plugin-catalog-node@1.4.7-next.2 + - @backstage/backend-plugin-api@0.6.6-next.2 + - @backstage/config@1.1.1-next.0 + +## 0.3.2-next.1 + +### Patch Changes + +- 6ae7f12abb: Make sure the archived projects are skipped with the Gitlab API +- Updated dependencies + - @backstage/backend-tasks@0.5.10-next.1 + - @backstage/plugin-catalog-node@1.4.6-next.1 + - @backstage/backend-common@0.19.7-next.1 + - @backstage/backend-plugin-api@0.6.5-next.1 + - @backstage/config@1.1.0 + - @backstage/catalog-model@1.4.2 + - @backstage/errors@1.2.2 + - @backstage/integration@1.7.1-next.0 + - @backstage/types@1.1.1 + +## 0.3.2-next.0 + +### Patch Changes + +- 890e3b5ad4: Make sure to include the error message when ingestion fails +- Updated dependencies + - @backstage/integration@1.7.1-next.0 + - @backstage/backend-common@0.19.7-next.0 + - @backstage/config@1.1.0 + - @backstage/backend-plugin-api@0.6.5-next.0 + - @backstage/backend-tasks@0.5.10-next.0 + - @backstage/catalog-model@1.4.2 + - @backstage/errors@1.2.2 + - @backstage/types@1.1.1 + - @backstage/plugin-catalog-node@1.4.6-next.0 + +## 0.3.0 + +### Minor Changes + +- 3d73bafd85c9: Fix Gitlab.com user ingestion by scoping GitlabOrgDiscoveryEntityProvider to a group. + + **BREAKING** The `group` parameter is now required Gitlab.com Org Data integrations and the backend will fail to start without this option configured. + + ```diff + catalog: + providers: + gitlab: + yourProviderId: + host: gitlab.com + orgEnabled: true + + group: org/teams + ``` + +### Patch Changes + +- 71114ac50e02: The export for the new backend system has been moved to be the `default` export. + + For example, if you are currently importing the plugin using the following pattern: + + ```ts + import { examplePlugin } from '@backstage/plugin-example-backend'; + + backend.add(examplePlugin); + ``` + + It should be migrated to this: + + ```ts + backend.add(import('@backstage/plugin-example-backend')); + ``` + +- Updated dependencies + - @backstage/backend-tasks@0.5.8 + - @backstage/backend-common@0.19.5 + - @backstage/config@1.1.0 + - @backstage/catalog-model@1.4.2 + - @backstage/errors@1.2.2 + - @backstage/integration@1.7.0 + - @backstage/types@1.1.1 + - @backstage/backend-plugin-api@0.6.3 + - @backstage/plugin-catalog-node@1.4.4 + +## 0.3.0-next.3 + +### Minor Changes + +- 3d73bafd85c9: Fix Gitlab.com user ingestion by scoping GitlabOrgDiscoveryEntityProvider to a group. + + **BREAKING** The `group` parameter is now required Gitlab.com Org Data integrations and the backend will fail to start without this option configured. + + ```diff + catalog: + providers: + gitlab: + yourProviderId: + host: gitlab.com + orgEnabled: true + + group: org/teams + ``` + +### Patch Changes + +- 71114ac50e02: The export for the new backend system has been moved to be the `default` export. + + For example, if you are currently importing the plugin using the following pattern: + + ```ts + import { examplePlugin } from '@backstage/plugin-example-backend'; + + backend.add(examplePlugin); + ``` + + It should be migrated to this: + + ```ts + backend.add(import('@backstage/plugin-example-backend')); + ``` + +- Updated dependencies + - @backstage/catalog-model@1.4.2-next.2 + - @backstage/config@1.1.0-next.2 + - @backstage/errors@1.2.2-next.0 + - @backstage/integration@1.7.0-next.3 + - @backstage/types@1.1.1-next.0 + - @backstage/backend-plugin-api@0.6.3-next.3 + - @backstage/backend-common@0.19.5-next.3 + - @backstage/backend-tasks@0.5.8-next.3 + - @backstage/plugin-catalog-node@1.4.4-next.3 + +## 0.2.7-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.0-next.1 + - @backstage/backend-tasks@0.5.8-next.2 + - @backstage/backend-common@0.19.5-next.2 + - @backstage/plugin-catalog-node@1.4.4-next.2 + - @backstage/integration@1.7.0-next.2 + - @backstage/backend-plugin-api@0.6.3-next.2 + - @backstage/catalog-model@1.4.2-next.1 + - @backstage/errors@1.2.1 + - @backstage/types@1.1.0 + +## 0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.1.0-next.0 + - @backstage/integration@1.7.0-next.1 + - @backstage/backend-tasks@0.5.8-next.1 + - @backstage/backend-common@0.19.5-next.1 + - @backstage/backend-plugin-api@0.6.3-next.1 + - @backstage/catalog-model@1.4.2-next.0 + - @backstage/plugin-catalog-node@1.4.4-next.1 + - @backstage/errors@1.2.1 + - @backstage/types@1.1.0 + +## 0.2.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.4-next.0 + - @backstage/integration@1.7.0-next.0 + - @backstage/backend-tasks@0.5.7-next.0 + - @backstage/backend-plugin-api@0.6.2-next.0 + - @backstage/catalog-model@1.4.1 + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-node@1.4.3-next.0 + +## 0.2.4 + +### Patch Changes + +- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config` +- e6c721439f37: Added option to skip forked repos in GitlabDiscoveryEntityProvider +- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result. +- 2fe1f5973ff7: Filter Gitlab archived projects through APIs +- Updated dependencies + - @backstage/backend-common@0.19.2 + - @backstage/backend-plugin-api@0.6.0 + - @backstage/plugin-catalog-node@1.4.1 + - @backstage/integration@1.6.0 + - @backstage/backend-tasks@0.5.5 + - @backstage/catalog-model@1.4.1 + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + - @backstage/types@1.1.0 + +## 0.2.4-next.2 + +### Patch Changes + +- 2fe1f5973ff7: Filter Gitlab archived projects through APIs +- Updated dependencies + - @backstage/backend-plugin-api@0.6.0-next.2 + - @backstage/backend-tasks@0.5.5-next.2 + - @backstage/backend-common@0.19.2-next.2 + - @backstage/plugin-catalog-node@1.4.1-next.2 + +## 0.2.4-next.1 + +### Patch Changes + +- 629cbd194a87: Use `coreServices.rootConfig` instead of `coreService.config` +- e6c721439f37: Added option to skip forked repos in GitlabDiscoveryEntityProvider +- 4b82382ed8c2: Fixed invalid configuration schema. The configuration schema may be more strict as a result. +- Updated dependencies + - @backstage/backend-common@0.19.2-next.1 + - @backstage/plugin-catalog-node@1.4.1-next.1 + - @backstage/backend-plugin-api@0.6.0-next.1 + - @backstage/backend-tasks@0.5.5-next.1 + - @backstage/integration@1.5.1 + - @backstage/catalog-model@1.4.1 + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + - @backstage/types@1.1.0 + +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.2-next.0 + - @backstage/backend-plugin-api@0.5.5-next.0 + - @backstage/backend-tasks@0.5.5-next.0 + - @backstage/catalog-model@1.4.1 + - @backstage/config@1.0.8 + - @backstage/errors@1.2.1 + - @backstage/integration@1.5.1 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-node@1.4.1-next.0 + +## 0.2.3 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1 + - @backstage/backend-common@0.19.1 + - @backstage/plugin-catalog-node@1.4.0 + - @backstage/backend-plugin-api@0.5.4 + - @backstage/backend-tasks@0.5.4 + - @backstage/catalog-model@1.4.1 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1 + - @backstage/types@1.1.0 + +## 0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + +## 0.2.2 + +### Patch Changes + +- f31fd1f8fd98: Fixed bug that caused ingestion errors when a user's name or profile picture is undefined. +- 66261b4ab441: Added option to skip forked repos +- 571f78ed0ea7: Fix getGroupMembers with token that don't have sufficient permissions +- Updated dependencies + - @backstage/backend-common@0.19.0 + - @backstage/types@1.1.0 + - @backstage/integration@1.5.0 + - @backstage/catalog-model@1.4.0 + - @backstage/errors@1.2.0 + - @backstage/backend-plugin-api@0.5.3 + - @backstage/backend-tasks@0.5.3 + - @backstage/plugin-catalog-node@1.3.7 + - @backstage/config@1.0.8 + +## 0.2.2-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.0-next.2 + - @backstage/catalog-model@1.4.0-next.1 + - @backstage/backend-plugin-api@0.5.3-next.2 + - @backstage/backend-tasks@0.5.3-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.2.0-next.0 + - @backstage/integration@1.5.0-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.7-next.2 + +## 0.2.2-next.2 + +### Patch Changes + +- f31fd1f8fd98: Fixed bug that caused ingestion errors when a user's name or profile picture is undefined. +- 66261b4ab441: Added option to skip forked repos +- Updated dependencies + - @backstage/config@1.0.7 + +## 0.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.0-next.1 + - @backstage/integration@1.5.0-next.0 + - @backstage/errors@1.2.0-next.0 + - @backstage/backend-plugin-api@0.5.3-next.1 + - @backstage/catalog-model@1.4.0-next.0 + - @backstage/backend-tasks@0.5.3-next.1 + - @backstage/plugin-catalog-node@1.3.7-next.1 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-node@1.3.7-next.0 + - @backstage/backend-common@0.18.6-next.0 + - @backstage/integration@1.4.5 + - @backstage/config@1.0.7 + - @backstage/backend-plugin-api@0.5.3-next.0 + - @backstage/backend-tasks@0.5.3-next.0 + - @backstage/catalog-model@1.3.0 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## 0.2.1 + +### Patch Changes + +- b12c41fafc4: Fix a corner case where returned users are null for bots +- Updated dependencies + - @backstage/backend-common@0.18.5 + - @backstage/integration@1.4.5 + - @backstage/backend-tasks@0.5.2 + - @backstage/plugin-catalog-node@1.3.6 + - @backstage/backend-plugin-api@0.5.2 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## 0.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5-next.1 + - @backstage/backend-tasks@0.5.2-next.1 + - @backstage/plugin-catalog-node@1.3.6-next.1 + - @backstage/backend-plugin-api@0.5.2-next.1 + - @backstage/config@1.0.7 + +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.5-next.0 + - @backstage/integration@1.4.5-next.0 + - @backstage/backend-tasks@0.5.2-next.0 + - @backstage/plugin-catalog-node@1.3.6-next.0 + - @backstage/backend-plugin-api@0.5.2-next.0 + - @backstage/catalog-model@1.3.0 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## 0.2.0 + +### Minor Changes + +- f64345108a0: **BREAKING**: The configuration of the `GitlabDiscoveryEntityProvider` has changed as follows: + + - The configuration key `branch` is now used to define the branch from which the catalog-info should be discovered. + - The old configuration key `branch` is now called `fallbackBranch`. This value specifies which branch should be used + if no default branch is defined on the project itself. + + To migrate to the new configuration value, rename `branch` to `fallbackBranch` + +### Patch Changes + +- 7b1b7bfdb7b: The gitlab org data integration now makes use of the GraphQL API to determine + the relationships between imported User and Group entities, effectively making + this integration usable without an administrator account's Personal Access + Token. +- Updated dependencies + - @backstage/backend-common@0.18.4 + - @backstage/backend-tasks@0.5.1 + - @backstage/catalog-model@1.3.0 + - @backstage/integration@1.4.4 + - @backstage/plugin-catalog-node@1.3.5 + - @backstage/backend-plugin-api@0.5.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + +## 0.2.0-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.3.0-next.0 + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.5-next.3 + +## 0.2.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.18.4-next.2 + - @backstage/backend-plugin-api@0.5.1-next.2 + - @backstage/backend-tasks@0.5.1-next.2 + - @backstage/catalog-model@1.2.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/integration@1.4.4-next.0 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.5-next.2 + +## 0.2.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.1-next.1 + - @backstage/integration@1.4.4-next.0 + - @backstage/backend-common@0.18.4-next.1 + - @backstage/backend-plugin-api@0.5.1-next.1 + - @backstage/catalog-model@1.2.1 + - @backstage/config@1.0.7 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.5-next.1 + +## 0.2.0-next.0 + +### Minor Changes + +- f64345108a0: **BREAKING**: The configuration of the `GitlabDiscoveryEntityProvider` has changed as follows: + + - The configuration key `branch` is now used to define the branch from which the catalog-info should be discovered. + - The old configuration key `branch` is now called `fallbackBranch`. This value specifies which branch should be used + if no default branch is defined on the project itself. + + To migrate to the new configuration value, rename `branch` to `fallbackBranch` + +### Patch Changes + +- 7b1b7bfdb7b: The gitlab org data integration now makes use of the GraphQL API to determine + the relationships between imported User and Group entities, effectively making + this integration usable without an administrator account's Personal Access + Token. +- Updated dependencies + - @backstage/backend-common@0.18.4-next.0 + - @backstage/config@1.0.7 + - @backstage/integration@1.4.3 + - @backstage/backend-plugin-api@0.5.1-next.0 + - @backstage/backend-tasks@0.5.1-next.0 + - @backstage/catalog-model@1.2.1 + - @backstage/errors@1.1.5 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.5-next.0 + +## 0.1.14 + +### Patch Changes + +- 90469c02c8c: Renamed `gitlabDiscoveryEntityProviderCatalogModule` to `catalogModuleGitlabDiscoveryEntityProvider` to match the [recommended naming patterns](https://backstage.io/docs/backend-system/architecture/naming-patterns). +- e675f902980: Make sure to not use deprecated exports from `@backstage/plugin-catalog-backend` +- 928a12a9b3e: Internal refactor of `/alpha` exports. +- 52b0022dab7: Updated dependency `msw` to `^1.0.0`. +- af1095f1e11: The configuration key `branch` of the `GitlabDiscoveryEntityProvider` has been deprecated in favor of the configuration key `fallbackBranch`. + It will be reused in future release to enforce a concrete branch to be used in catalog file discovery. + To migrate to the new configuration value, rename `branch` to `fallbackBranch`. +- be129f8f3cd: filter gitlab groups by prefix +- Updated dependencies + - @backstage/backend-tasks@0.5.0 + - @backstage/backend-common@0.18.3 + - @backstage/errors@1.1.5 + - @backstage/plugin-catalog-node@1.3.4 + - @backstage/backend-plugin-api@0.5.0 + - @backstage/catalog-model@1.2.1 + - @backstage/integration@1.4.3 + - @backstage/config@1.0.7 + - @backstage/types@1.0.2 + +## 0.1.14-next.2 + +### Patch Changes + +- be129f8f3cd: filter gitlab groups by prefix +- Updated dependencies + - @backstage/backend-tasks@0.5.0-next.2 + - @backstage/backend-common@0.18.3-next.2 + - @backstage/backend-plugin-api@0.4.1-next.2 + - @backstage/plugin-catalog-backend@1.8.0-next.2 + - @backstage/plugin-catalog-node@1.3.4-next.2 + - @backstage/config@1.0.7-next.0 + - @backstage/integration@1.4.3-next.0 + +## 0.1.14-next.1 + +### Patch Changes + +- 52b0022dab7: Updated dependency `msw` to `^1.0.0`. +- af1095f1e11: The configuration key `branch` of the `GitlabDiscoveryEntityProvider` has been deprecated in favor of the configuration key `fallbackBranch`. + It will be reused in future release to enforce a concrete branch to be used in catalog file discovery. + To migrate to the new configuration value, rename `branch` to `fallbackBranch`. +- Updated dependencies + - @backstage/errors@1.1.5-next.0 + - @backstage/backend-common@0.18.3-next.1 + - @backstage/integration@1.4.3-next.0 + - @backstage/plugin-catalog-backend@1.8.0-next.1 + - @backstage/backend-plugin-api@0.4.1-next.1 + - @backstage/backend-tasks@0.4.4-next.1 + - @backstage/config@1.0.7-next.0 + - @backstage/catalog-model@1.2.1-next.1 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.4-next.1 + +## 0.1.14-next.0 + +### Patch Changes + +- 928a12a9b3: Internal refactor of `/alpha` exports. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.8.0-next.0 + - @backstage/backend-tasks@0.4.4-next.0 + - @backstage/backend-plugin-api@0.4.1-next.0 + - @backstage/backend-common@0.18.3-next.0 + - @backstage/catalog-model@1.2.1-next.0 + - @backstage/plugin-catalog-node@1.3.4-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + +## 0.1.13 + +### Patch Changes + +- 49948f644f: The config now consistently uses the term 'instance' to refer to a single GitLab API host. +- 85b04f659a: Internal refactor to not use deprecated `substr` +- 52c5685ceb: Implement Group and User Catalog Provider +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2 + - @backstage/backend-plugin-api@0.4.0 + - @backstage/backend-common@0.18.2 + - @backstage/catalog-model@1.2.0 + - @backstage/plugin-catalog-node@1.3.3 + - @backstage/backend-tasks@0.4.3 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + +## 0.1.13-next.2 + +### Patch Changes + +- 49948f644f: The config now consistently uses the term 'instance' to refer to a single GitLab API host. +- Updated dependencies + - @backstage/backend-plugin-api@0.4.0-next.2 + - @backstage/backend-common@0.18.2-next.2 + - @backstage/plugin-catalog-backend@1.7.2-next.2 + - @backstage/catalog-model@1.2.0-next.1 + - @backstage/plugin-catalog-node@1.3.3-next.2 + - @backstage/backend-tasks@0.4.3-next.2 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + +## 0.1.13-next.1 + +### Patch Changes + +- 85b04f659a: Internal refactor to not use deprecated `substr` +- 52c5685ceb: Implement Group and User Catalog Provider +- Updated dependencies + - @backstage/plugin-catalog-backend@1.7.2-next.1 + - @backstage/backend-common@0.18.2-next.1 + - @backstage/backend-plugin-api@0.3.2-next.1 + - @backstage/backend-tasks@0.4.3-next.1 + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.3-next.1 + +## 0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.6-next.0 + - @backstage/backend-common@0.18.2-next.0 + - @backstage/plugin-catalog-backend@1.7.2-next.0 + - @backstage/plugin-catalog-node@1.3.3-next.0 + - @backstage/backend-tasks@0.4.3-next.0 + - @backstage/backend-plugin-api@0.3.2-next.0 + +## 0.1.11 + +### Patch Changes + +- 9f2b786fc9: Provide context for logged errors. +- 8e06f3cf00: Switched imports of `loggerToWinstonLogger` to `@backstage/backend-common`. +- Updated dependencies + - @backstage/backend-plugin-api@0.3.0 + - @backstage/backend-common@0.18.0 + - @backstage/catalog-model@1.1.5 + - @backstage/backend-tasks@0.4.1 + - @backstage/plugin-catalog-node@1.3.1 + - @backstage/plugin-catalog-backend@1.7.0 + - @backstage/config@1.0.6 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2 + - @backstage/types@1.0.2 + +## 0.1.11-next.2 + +### Patch Changes + +- 9f2b786fc9: Provide context for logged errors. +- 8e06f3cf00: Switched imports of `loggerToWinstonLogger` to `@backstage/backend-common`. +- Updated dependencies + - @backstage/backend-plugin-api@0.3.0-next.1 + - @backstage/backend-common@0.18.0-next.1 + - @backstage/backend-tasks@0.4.1-next.1 + - @backstage/plugin-catalog-backend@1.7.0-next.2 + - @backstage/plugin-catalog-node@1.3.1-next.2 + - @backstage/catalog-model@1.1.5-next.1 + - @backstage/config@1.0.6-next.0 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2-next.0 + - @backstage/types@1.0.2 + +## 0.1.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.2.1-next.0 + - @backstage/backend-common@0.18.0-next.0 + - @backstage/config@1.0.6-next.0 + - @backstage/plugin-catalog-backend@1.7.0-next.1 + - @backstage/plugin-catalog-node@1.3.1-next.1 + - @backstage/backend-tasks@0.4.1-next.0 + - @backstage/catalog-model@1.1.5-next.1 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.2-next.0 + - @backstage/types@1.0.2 + +## 0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.5-next.0 + - @backstage/plugin-catalog-backend@1.7.0-next.0 + - @backstage/backend-common@0.17.0 + - @backstage/backend-plugin-api@0.2.0 + - @backstage/backend-tasks@0.4.0 + - @backstage/config@1.0.5 + - @backstage/errors@1.1.4 + - @backstage/integration@1.4.1 + - @backstage/types@1.0.2 + - @backstage/plugin-catalog-node@1.3.1-next.0 + +## 0.1.10 + +### Patch Changes + +- 884d749b14: Refactored to use `coreServices` from `@backstage/backend-plugin-api`. +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0 + - @backstage/backend-common@0.17.0 + - @backstage/plugin-catalog-node@1.3.0 + - @backstage/backend-tasks@0.4.0 + - @backstage/errors@1.1.4 + - @backstage/backend-plugin-api@0.2.0 + - @backstage/integration@1.4.1 + - @backstage/types@1.0.2 + - @backstage/catalog-model@1.1.4 + - @backstage/config@1.0.5 + +## 0.1.10-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.3 + - @backstage/backend-tasks@0.4.0-next.3 + - @backstage/backend-common@0.17.0-next.3 + - @backstage/backend-plugin-api@0.2.0-next.3 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/plugin-catalog-node@1.3.0-next.3 + +## 0.1.10-next.2 + +### Patch Changes + +- 884d749b14: Refactored to use `coreServices` from `@backstage/backend-plugin-api`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.2 + - @backstage/plugin-catalog-node@1.3.0-next.2 + - @backstage/backend-common@0.17.0-next.2 + - @backstage/backend-plugin-api@0.2.0-next.2 + - @backstage/backend-tasks@0.4.0-next.2 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/errors@1.1.4-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/types@1.0.2-next.1 + +## 0.1.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.17.0-next.1 + - @backstage/plugin-catalog-backend@1.6.0-next.1 + - @backstage/backend-tasks@0.4.0-next.1 + - @backstage/types@1.0.2-next.1 + - @backstage/backend-plugin-api@0.1.5-next.1 + - @backstage/plugin-catalog-node@1.2.2-next.1 + - @backstage/config@1.0.5-next.1 + - @backstage/integration@1.4.1-next.1 + - @backstage/catalog-model@1.1.4-next.1 + - @backstage/errors@1.1.4-next.1 + +## 0.1.10-next.0 + +### Patch Changes + +- 3280711113: Updated dependency `msw` to `^0.49.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.6.0-next.0 + - @backstage/backend-common@0.16.1-next.0 + - @backstage/integration@1.4.1-next.0 + - @backstage/types@1.0.2-next.0 + - @backstage/backend-plugin-api@0.1.5-next.0 + - @backstage/plugin-catalog-node@1.2.2-next.0 + - @backstage/backend-tasks@0.3.8-next.0 + - @backstage/catalog-model@1.1.4-next.0 + - @backstage/config@1.0.5-next.0 + - @backstage/errors@1.1.4-next.0 + +## 0.1.9 + +### Patch Changes + +- 6bb046bcbe: Add `gitlabDiscoveryEntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- 81cedb5033: `GitlabDiscoveryEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. + +- Updated dependencies + - @backstage/backend-common@0.16.0 + - @backstage/plugin-catalog-backend@1.5.1 + - @backstage/integration@1.4.0 + - @backstage/backend-tasks@0.3.7 + - @backstage/catalog-model@1.1.3 + - @backstage/types@1.0.1 + - @backstage/backend-plugin-api@0.1.4 + - @backstage/plugin-catalog-node@1.2.1 + - @backstage/config@1.0.4 + - @backstage/errors@1.1.3 + +## 0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.1 + - @backstage/backend-plugin-api@0.1.4-next.1 + - @backstage/backend-tasks@0.3.7-next.1 + - @backstage/plugin-catalog-backend@1.5.1-next.1 + - @backstage/plugin-catalog-node@1.2.1-next.1 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/types@1.0.1-next.0 + +## 0.1.9-next.0 + +### Patch Changes + +- 6bb046bcbe: Add `gitlabDiscoveryEntityProviderCatalogModule` (new backend-plugin-api, alpha). + +- 81cedb5033: `GitlabDiscoveryEntityProvider`: Add option to configure schedule via `app-config.yaml` instead of in code. + + Please find how to configure the schedule at the config at + + +- Updated dependencies + - @backstage/backend-common@0.16.0-next.0 + - @backstage/plugin-catalog-backend@1.5.1-next.0 + - @backstage/integration@1.4.0-next.0 + - @backstage/backend-tasks@0.3.7-next.0 + - @backstage/catalog-model@1.1.3-next.0 + - @backstage/types@1.0.1-next.0 + - @backstage/backend-plugin-api@0.1.4-next.0 + - @backstage/plugin-catalog-node@1.2.1-next.0 + - @backstage/config@1.0.4-next.0 + - @backstage/errors@1.1.3-next.0 + +## 0.1.8 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.2 + - @backstage/backend-common@0.15.2 + - @backstage/plugin-catalog-backend@1.5.0 + - @backstage/backend-tasks@0.3.6 + - @backstage/config@1.0.3 + - @backstage/errors@1.1.2 + - @backstage/integration@1.3.2 + - @backstage/types@1.0.0 + +## 0.1.8-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.5.0-next.2 + - @backstage/backend-tasks@0.3.6-next.2 + - @backstage/backend-common@0.15.2-next.2 + - @backstage/catalog-model@1.1.2-next.2 + - @backstage/config@1.0.3-next.2 + - @backstage/errors@1.1.2-next.2 + - @backstage/integration@1.3.2-next.2 + - @backstage/types@1.0.0 + +## 0.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.2-next.1 + - @backstage/backend-tasks@0.3.6-next.1 + - @backstage/catalog-model@1.1.2-next.1 + - @backstage/config@1.0.3-next.1 + - @backstage/errors@1.1.2-next.1 + - @backstage/integration@1.3.2-next.1 + - @backstage/types@1.0.0 + - @backstage/plugin-catalog-backend@1.4.1-next.1 + +## 0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.2-next.0 + - @backstage/plugin-catalog-backend@1.4.1-next.0 + - @backstage/backend-common@0.15.2-next.0 + - @backstage/backend-tasks@0.3.6-next.0 + - @backstage/config@1.0.3-next.0 + - @backstage/errors@1.1.2-next.0 + - @backstage/integration@1.3.2-next.0 + - @backstage/types@1.0.0 + +## 0.1.7 + +### Patch Changes + +- 667d917488: Updated dependency `msw` to `^0.47.0`. +- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`. +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1 + - @backstage/integration@1.3.1 + - @backstage/plugin-catalog-backend@1.4.0 + - @backstage/backend-tasks@0.3.5 + - @backstage/catalog-model@1.1.1 + - @backstage/config@1.0.2 + - @backstage/errors@1.1.1 + +## 0.1.7-next.3 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.1.1-next.0 + - @backstage/config@1.0.2-next.0 + - @backstage/errors@1.1.1-next.0 + - @backstage/integration@1.3.1-next.2 + - @backstage/plugin-catalog-backend@1.4.0-next.3 + - @backstage/backend-common@0.15.1-next.3 + - @backstage/backend-tasks@0.3.5-next.1 + +## 0.1.7-next.2 + +### Patch Changes + +- 667d917488: Updated dependency `msw` to `^0.47.0`. +- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.2 + - @backstage/integration@1.3.1-next.1 + - @backstage/plugin-catalog-backend@1.4.0-next.2 + +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.1-next.1 + - @backstage/plugin-catalog-backend@1.4.0-next.1 + +## 0.1.7-next.0 + +### Patch Changes + +- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. +- Updated dependencies + - @backstage/backend-common@0.15.1-next.0 + - @backstage/backend-tasks@0.3.5-next.0 + - @backstage/plugin-catalog-backend@1.3.2-next.0 + - @backstage/integration@1.3.1-next.0 + +## 0.1.6 + +### Patch Changes + +- 24979413a4: Enhancing GitLab provider with filtering projects by pattern RegExp + + ```yaml + providers: + gitlab: + stg: + host: gitlab.stg.company.io + branch: main + projectPattern: 'john/' # new option + entityFilename: template.yaml + ``` + + With the aforementioned parameter you can filter projects, and keep only who belongs to the namespace "john". + +- Updated dependencies + - @backstage/backend-common@0.15.0 + - @backstage/integration@1.3.0 + - @backstage/backend-tasks@0.3.4 + - @backstage/plugin-catalog-backend@1.3.1 + +## 0.1.6-next.1 + +### Patch Changes + +- 24979413a4: Enhancing GitLab provider with filtering projects by pattern RegExp + + ```yaml + providers: + gitlab: + stg: + host: gitlab.stg.company.io + branch: main + projectPattern: 'john/' # new option + entityFilename: template.yaml + ``` + + With the aforementioned parameter you can filter projects, and keep only who belongs to the namespace "john". + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.1-next.2 + +## 0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.15.0-next.0 + - @backstage/integration@1.3.0-next.0 + - @backstage/backend-tasks@0.3.4-next.0 + - @backstage/plugin-catalog-backend@1.3.1-next.0 + +## 0.1.5 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. + +- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. + +- 49ff472c0b: Add the possibility in the `GitlabDiscoveryEntityProvider` to scan the whole project instead of concrete groups. For that, use a configuration like this one, where the group parameter is omitted (not mandatory anymore): + + ```yaml + catalog: + providers: + gitlab: + yourProviderId: + host: gitlab-host # Identifies one of the hosts set up in the integrations + branch: main # Optional. Uses `master` as default + entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml` + ``` + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0 + - @backstage/backend-common@0.14.1 + - @backstage/catalog-model@1.1.0 + - @backstage/integration@1.2.2 + - @backstage/backend-tasks@0.3.3 + - @backstage/errors@1.1.0 + +## 0.1.5-next.2 + +### Patch Changes + +- a70869e775: Updated dependency `msw` to `^0.43.0`. +- Updated dependencies + - @backstage/plugin-catalog-backend@1.3.0-next.3 + - @backstage/backend-common@0.14.1-next.3 + - @backstage/integration@1.2.2-next.3 + - @backstage/backend-tasks@0.3.3-next.3 + - @backstage/catalog-model@1.1.0-next.3 + +## 0.1.5-next.1 + +### Patch Changes + +- 49ff472c0b: Add the possibility in the `GitlabDiscoveryEntityProvider` to scan the whole project instead of concrete groups. For that, use a configuration like this one, where the group parameter is omitted (not mandatory anymore): + + ```yaml + catalog: + providers: + gitlab: + yourProviderId: + host: gitlab-host # Identifies one of the hosts set up in the integrations + branch: main # Optional. Uses `master` as default + entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml` + ``` + +- Updated dependencies + - @backstage/catalog-model@1.1.0-next.1 + - @backstage/backend-common@0.14.1-next.1 + - @backstage/errors@1.1.0-next.0 + - @backstage/plugin-catalog-backend@1.2.1-next.1 + - @backstage/backend-tasks@0.3.3-next.1 + - @backstage/integration@1.2.2-next.1 + +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.1-next.0 + - @backstage/catalog-model@1.1.0-next.0 + - @backstage/integration@1.2.2-next.0 + - @backstage/backend-tasks@0.3.3-next.0 + - @backstage/plugin-catalog-backend@1.2.1-next.0 + +## 0.1.4 + +### Patch Changes + +- eea8126171: Add a new provider `GitlabDiscoveryEntityProvider` as replacement for `GitlabDiscoveryProcessor` + + In order to migrate from the `GitlabDiscoveryProcessor` you need to apply + the following changes: + + **Before:** + + ```yaml + # app-config.yaml + + catalog: + locations: + - type: gitlab-discovery + target: https://company.gitlab.com/prefix/*/catalog-info.yaml + ``` + + ```ts + /* packages/backend/src/plugins/catalog.ts */ + + import { GitlabDiscoveryProcessor } from '@backstage/plugin-catalog-backend-module-gitlab'; + + const builder = await CatalogBuilder.create(env); + /** ... other processors ... */ + builder.addProcessor( + GitLabDiscoveryProcessor.fromConfig(env.config, { logger: env.logger }), + ); + ``` + + **After:** + + ```yaml + # app-config.yaml + + catalog: + providers: + gitlab: + yourProviderId: # identifies your dataset / provider independent of config changes + host: gitlab-host # Identifies one of the hosts set up in the integrations + branch: main # Optional. Uses `master` as default + group: example-group # Group and subgroup (if needed) to look for repositories + entityFilename: catalog-info.yaml # Optional. Defaults to `catalog-info.yaml` + ``` + + ```ts + /* packages/backend/src/plugins/catalog.ts */ + + import { GitlabDiscoveryEntityProvider } from '@backstage/plugin-catalog-backend-module-gitlab'; + + const builder = await CatalogBuilder.create(env); + /** ... other processors and/or providers ... */ + builder.addEntityProvider( + ...GitlabDiscoveryEntityProvider.fromConfig(env.config, { + logger: env.logger, + schedule: env.scheduler.createScheduledTaskRunner({ + frequency: { minutes: 30 }, + timeout: { minutes: 3 }, + }), + }), + ); + ``` + +- bad907d794: The `last_activity_after` timestamp is now being omitted when querying the GitLab API for the first time. + +- 3ac4522537: do not create location object if file with component definition do not exists in project, that decrease count of request to gitlab with 404 status code. Now we can create processor with new flag to enable this logic: + + ```ts + const processor = GitLabDiscoveryProcessor.fromConfig(config, { + logger, + skipReposWithoutExactFileMatch: true, + }); + ``` + + **WARNING:** This new functionality does not support globs in the repo file path + +- 8f7b1835df: Updated dependency `msw` to `^0.41.0`. + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.2.0 + - @backstage/backend-tasks@0.3.2 + - @backstage/backend-common@0.14.0 + - @backstage/integration@1.2.1 + - @backstage/catalog-model@1.0.3 + +## 0.1.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.14.0-next.2 + - @backstage/integration@1.2.1-next.2 + - @backstage/plugin-catalog-backend@1.2.0-next.2 + +## 0.1.4-next.1 + +### Patch Changes + +- 8f7b1835df: Updated dependency `msw` to `^0.41.0`. +- Updated dependencies + - @backstage/backend-common@0.13.6-next.1 + - @backstage/integration@1.2.1-next.1 + - @backstage/plugin-catalog-backend@1.2.0-next.1 + - @backstage/catalog-model@1.0.3-next.0 + +## 0.1.4-next.0 + +### Patch Changes + +- 3ac4522537: do not create location object if file with component definition do not exists in project, that decrease count of request to gitlab with 404 status code. Now we can create processor with new flag to enable this logic: + + ```ts + const processor = GitLabDiscoveryProcessor.fromConfig(config, { + logger, + skipReposWithoutExactFileMatch: true, + }); + ``` + + **WARNING:** This new functionality does not support globs in the repo file path + +- Updated dependencies + - @backstage/backend-common@0.13.6-next.0 + - @backstage/integration@1.2.1-next.0 + - @backstage/plugin-catalog-backend@1.2.0-next.0 + +## 0.1.3 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.13.3 + - @backstage/plugin-catalog-backend@1.1.2 + - @backstage/integration@1.2.0 + - @backstage/config@1.0.1 + - @backstage/catalog-model@1.0.2 + +## 0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.13.3-next.2 + - @backstage/plugin-catalog-backend@1.1.2-next.2 + - @backstage/config@1.0.1-next.0 + - @backstage/catalog-model@1.0.2-next.0 + - @backstage/integration@1.2.0-next.1 + +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.13.3-next.0 + - @backstage/integration@1.2.0-next.0 + - @backstage/plugin-catalog-backend@1.1.2-next.0 + +## 0.1.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.1.0 + - @backstage/integration@1.1.0 + - @backstage/catalog-model@1.0.1 + - @backstage/backend-common@0.13.2 + +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.1.0-next.1 + - @backstage/integration@1.1.0-next.1 + - @backstage/backend-common@0.13.2-next.1 + +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.0.1-next.0 + - @backstage/plugin-catalog-backend@1.0.1-next.0 + - @backstage/backend-common@0.13.2-next.0 + - @backstage/integration@1.0.1-next.0 + +## 0.1.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.0.0 + - @backstage/backend-common@0.13.1 + - @backstage/catalog-model@1.0.0 + - @backstage/integration@1.0.0 + - @backstage/config@1.0.0 + - @backstage/errors@1.0.0 + - @backstage/types@1.0.0 + +## 0.1.0 + +### Minor Changes + +- 66ba5d9023: Added package, moving out GitLab specific functionality from the catalog-backend + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.13.0 + - @backstage/plugin-catalog-backend@0.24.0 + - @backstage/catalog-model@0.13.0 + +## 0.1.0-next.0 + +### Minor Changes + +- 66ba5d9023: Added package, moving out GitLab specific functionality from the catalog-backend + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.13.0-next.0 + - @backstage/plugin-catalog-backend@0.24.0-next.0 + - @backstage/catalog-model@0.13.0-next.0 + +## @backstage/plugin-signals-backend@0.3.0-next.1 + +### Minor Changes + +- f59ea1d: Removed support for the old backend system. If you were using the old `createRouter` export, please migrate to [the new backend system](https://backstage.io/docs/backend-system/). + +## @backstage/create-app@0.5.24-next.1 + +### Patch Changes + +- 828c993: Added `-j 2` to `dev` script to help cases where the backend does not start up during local development + +## @backstage/dev-utils@1.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/integration-react@1.2.2 + +## @backstage/plugin-api-docs@0.12.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-catalog@1.26.1-next.0 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-catalog@1.26.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/integration-react@1.2.2 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-catalog-backend-module-msgraph@0.6.6-next.1 + +### Patch Changes + +- 29a4aa8: fix(config): add missing parameters in config schema + +## @backstage/plugin-catalog-graph@0.4.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-catalog-import@0.12.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/integration-react@1.2.2 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-catalog-react@1.15.1-next.0 + +### Patch Changes + +- cbfc0a4: Fixed an issue where the `` in `offset` mode would unnecessarily re-fetch data when the filter didn't change, causing a flicker effect. +- Updated dependencies + - @backstage/integration-react@1.2.2 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-home@0.8.4-next.1 + +### Patch Changes + +- d8f9079: Updated dependency `@rjsf/utils` to `5.23.2`. + Updated dependency `@rjsf/core` to `5.23.2`. + Updated dependency `@rjsf/material-ui` to `5.23.2`. + Updated dependency `@rjsf/validator-ajv8` to `5.23.2`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-home-react@0.1.22-next.0 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-home-react@0.1.22-next.0 + +### Patch Changes + +- d8f9079: Updated dependency `@rjsf/utils` to `5.23.2`. + Updated dependency `@rjsf/core` to `5.23.2`. + Updated dependency `@rjsf/material-ui` to `5.23.2`. + Updated dependency `@rjsf/validator-ajv8` to `5.23.2`. + +## @backstage/plugin-kubernetes@0.12.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-kubernetes-cluster@0.0.21-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + +## @backstage/plugin-org@0.6.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-org-react@0.1.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + +## @backstage/plugin-scaffolder@1.27.4-next.1 + +### Patch Changes + +- d8f9079: Updated dependency `@rjsf/utils` to `5.23.2`. + Updated dependency `@rjsf/core` to `5.23.2`. + Updated dependency `@rjsf/material-ui` to `5.23.2`. + Updated dependency `@rjsf/validator-ajv8` to `5.23.2`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.1 + - @backstage/integration-react@1.2.2 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-scaffolder-backend@1.29.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.1 + +## @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.1 + +### Patch Changes + +- edaf925: Updates to allow users to subscribe to the newly created repository within GitHub to mimic similar functionality found within the GitHub UI. + +## @backstage/plugin-scaffolder-react@1.14.3-next.1 + +### Patch Changes + +- d8f9079: Updated dependency `@rjsf/utils` to `5.23.2`. + Updated dependency `@rjsf/core` to `5.23.2`. + Updated dependency `@rjsf/material-ui` to `5.23.2`. + Updated dependency `@rjsf/validator-ajv8` to `5.23.2`. +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + +## @backstage/plugin-search@1.4.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-techdocs@1.12.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/integration-react@1.2.2 + - @backstage/core-compat-api@0.3.4 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.44-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-catalog@1.26.1-next.0 + - @backstage/plugin-techdocs@1.12.1-next.0 + - @backstage/integration-react@1.2.2 + +## @backstage/plugin-techdocs-backend@1.11.5-next.1 + +### Patch Changes + +- 29a4aa8: fix(config): add missing parameters in config schema + +## @backstage/plugin-user-settings@0.8.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/core-compat-api@0.3.4 + +## example-app@0.2.105-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-home@0.8.4-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.1 + - @backstage/plugin-api-docs@0.12.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.0 + - @backstage/plugin-catalog-import@0.12.9-next.0 + - @backstage/plugin-kubernetes@0.12.3-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.0 + - @backstage/plugin-org@0.6.35-next.0 + - @backstage/plugin-search@1.4.22-next.0 + - @backstage/plugin-techdocs@1.12.1-next.0 + - @backstage/plugin-user-settings@0.8.18-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/integration-react@1.2.2 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-devtools@0.1.22 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + +## example-app-next@0.0.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-home@0.8.4-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.1 + - @backstage/plugin-api-docs@0.12.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.0 + - @backstage/plugin-catalog-import@0.12.9-next.0 + - @backstage/plugin-kubernetes@0.12.3-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.0 + - @backstage/plugin-org@0.6.35-next.0 + - @backstage/plugin-search@1.4.22-next.0 + - @backstage/plugin-techdocs@1.12.1-next.0 + - @backstage/plugin-user-settings@0.8.18-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/integration-react@1.2.2 + - @backstage/plugin-app@0.1.4 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-signals@0.0.14 + - @backstage/core-compat-api@0.3.4 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + +## example-backend@0.0.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.1 + - @backstage/plugin-signals-backend@0.3.0-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.1 + - @backstage/plugin-notifications-backend@0.5.1-next.0 + +## example-backend-legacy@0.2.106-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-signals-backend@0.3.0-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.1 + +## e2e-test@0.2.24-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.24-next.1 + +## @internal/scaffolder@0.0.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.1 + +## techdocs-cli-embedded-app@0.2.104-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.26.1-next.0 + - @backstage/plugin-techdocs@1.12.1-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/integration-react@1.2.2 diff --git a/docs/releases/v1.35.0-next.2-changelog.md b/docs/releases/v1.35.0-next.2-changelog.md new file mode 100644 index 0000000000..0c9cf4a81f --- /dev/null +++ b/docs/releases/v1.35.0-next.2-changelog.md @@ -0,0 +1,2203 @@ +# Release v1.35.0-next.2 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.35.0-next.2](https://backstage.github.io/upgrade-helper/?to=1.35.0-next.2) + +## @backstage/app-defaults@1.5.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/theme@0.6.3 + +## @backstage/backend-app-api@1.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/cli-common@0.1.15 + +## @backstage/backend-defaults@0.7.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-app-api@1.1.1-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/cli-node@0.2.12-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/integration-aws-node@0.1.15-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/cli-common@0.1.15 + - @backstage/integration@1.16.1-next.0 + +## @backstage/backend-dynamic-feature-service@0.5.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-app-api@1.1.1-next.1 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/cli-node@0.2.12-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-events-backend@0.4.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/plugin-app-node@0.1.29-next.1 + - @backstage/cli-common@0.1.15 + +## @backstage/backend-openapi-utils@0.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/errors@1.2.7-next.0 + +## @backstage/backend-plugin-api@1.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/cli-common@0.1.15 + +## @backstage/backend-test-utils@1.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-app-api@1.1.1-next.1 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/catalog-client@1.9.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/catalog-model@1.7.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/cli@0.29.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/cli-node@0.2.12-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/release-manifests@0.0.12 + - @backstage/cli-common@0.1.15 + - @backstage/eslint-plugin@0.1.10 + - @backstage/integration@1.16.1-next.0 + +## @backstage/cli-node@0.2.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/cli-common@0.1.15 + +## @backstage/config@1.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/config-loader@1.9.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/cli-common@0.1.15 + +## @backstage/core-app-api@1.15.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/core-compat-api@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/core-components@0.16.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/theme@0.6.3 + - @backstage/version-bridge@1.0.10 + +## @backstage/core-plugin-api@1.10.3-next.0 + +### Patch Changes + +- b40eb41: Move `Expand` and `ExpandRecursive` to `@backstage/types` +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/create-app@0.5.24-next.2 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.15 + +## @backstage/dev-utils@1.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/app-defaults@1.5.16-next.0 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/theme@0.6.3 + +## @backstage/errors@1.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + +## @backstage/frontend-app-api@0.10.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/frontend-defaults@0.1.5-next.0 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/frontend-defaults@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/frontend-app-api@0.10.4-next.0 + - @backstage/plugin-app@0.1.5-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/frontend-plugin-api@0.9.4-next.0 + +### Patch Changes + +- b40eb41: Move `Expand` and `ExpandRecursive` to `@backstage/types` +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/frontend-test-utils@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/frontend-app-api@0.10.4-next.0 + - @backstage/plugin-app@0.1.5-next.0 + - @backstage/test-utils@1.7.4-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/integration@1.16.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/integration-aws-node@0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/integration-react@1.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/repo-tools@0.12.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/cli-node@0.2.12-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/cli-common@0.1.15 + +## @techdocs/cli@1.8.25-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-techdocs-node@1.12.16-next.1 + - @backstage/cli-common@0.1.15 + +## @backstage/test-utils@1.7.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/theme@0.6.3 + +## @backstage/types@1.2.1-next.0 + +### Patch Changes + +- b40eb41: Move `Expand` and `ExpandRecursive` to `@backstage/types` + +## @backstage/plugin-api-docs@0.12.3-next.1 + +### Patch Changes + +- dcf6e72: Fix typo in default path of api docs definition route +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.1 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-app@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/theme@0.6.3 + +## @backstage/plugin-app-backend@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-app-node@0.1.29-next.1 + +## @backstage/plugin-app-node@0.1.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config-loader@1.9.5-next.1 + +## @backstage/plugin-app-visualizer@0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + +## @backstage/plugin-auth-backend@0.24.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.4-next.1 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.4-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.3.4-next.1 + - @backstage/plugin-auth-backend-module-auth0-provider@0.1.4-next.1 + - @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.4-next.1 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.3.4-next.1 + - @backstage/plugin-auth-backend-module-oidc-provider@0.3.4-next.1 + - @backstage/plugin-auth-backend-module-okta-provider@0.1.4-next.1 + - @backstage/plugin-auth-backend-module-onelogin-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.3.2-next.1 + - @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-google-provider@0.2.4-next.1 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.4-next.1 + - @backstage/catalog-client@1.9.1-next.0 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-auth0-provider@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.3.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-google-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-backend@0.24.2-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-okta-provider@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-onelogin-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.4.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @backstage/plugin-auth-node@0.5.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/catalog-client@1.9.1-next.0 + +## @backstage/plugin-auth-react@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/plugin-bitbucket-cloud-common@0.2.27-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog@1.26.1-next.1 + +### Patch Changes + +- 208e53b: Fixing spelling mistake in translation +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-common@1.5.9-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-catalog-backend@1.30.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.4.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-kubernetes-common@0.9.2-next.0 + - @backstage/integration-aws-node@0.1.15-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.3.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.4.1-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.4.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.27-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.3.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-gcp@0.3.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-kubernetes-common@0.9.2-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.2.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.7.9-next.1 + +### Patch Changes + +- 4ab00e4: Fixes an issue in `GithubMultiOrgEntityProvider` that caused an error when processing teams without a parent. +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.3.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.7.9-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-catalog-backend-module-gitlab@0.6.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-catalog-backend-module-gitlab@0.6.2-next.1 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.6.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.11.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-catalog-backend-module-logs@0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-catalog-backend-module-msgraph@0.6.6-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.2.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-scaffolder-common@1.5.9-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-catalog-unprocessed-entities-common@0.0.7-next.0 + +## @backstage/plugin-catalog-common@1.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + +## @backstage/plugin-catalog-graph@0.4.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/catalog-client@1.9.1-next.0 + +## @backstage/plugin-catalog-import@0.12.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-catalog-node@1.15.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-catalog-react@1.15.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/frontend-test-utils@0.2.5-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/plugin-catalog-unprocessed-entities@0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/plugin-catalog-unprocessed-entities-common@0.0.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-config-schema@0.1.64-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/plugin-devtools@0.1.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-devtools-common@0.1.15-next.0 + +## @backstage/plugin-devtools-backend@0.5.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-devtools-common@0.1.15-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/cli-common@0.1.15 + +## @backstage/plugin-devtools-common@0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-events-backend@0.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-backend-module-aws-sqs@0.4.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-backend-module-azure@0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-backend-module-gerrit@0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-backend-module-github@0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-backend-module-gitlab@0.2.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-backend-test-utils@0.1.40-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-events-node@0.4.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/errors@1.2.7-next.0 + +## @backstage/plugin-home@0.8.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-home-react@0.1.22-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/theme@0.6.3 + +## @backstage/plugin-home-react@0.1.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + +## @backstage/plugin-kubernetes@0.12.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-kubernetes-react@0.5.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-kubernetes-common@0.9.2-next.0 + +## @backstage/plugin-kubernetes-backend@0.19.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-kubernetes-common@0.9.2-next.0 + - @backstage/plugin-kubernetes-node@0.2.2-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/integration-aws-node@0.1.15-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/catalog-client@1.9.1-next.0 + +## @backstage/plugin-kubernetes-cluster@0.0.21-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-kubernetes-react@0.5.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-kubernetes-common@0.9.2-next.0 + +## @backstage/plugin-kubernetes-common@0.9.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-kubernetes-node@0.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-kubernetes-common@0.9.2-next.0 + +## @backstage/plugin-kubernetes-react@0.5.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-kubernetes-common@0.9.2-next.0 + +## @backstage/plugin-notifications@0.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-signals-react@0.0.9-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/theme@0.6.3 + - @backstage/plugin-notifications-common@0.0.8-next.0 + +## @backstage/plugin-notifications-backend@0.5.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-signals-node@0.1.16-next.1 + - @backstage/plugin-notifications-node@0.2.11-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-notifications-common@0.0.8-next.0 + +## @backstage/plugin-notifications-backend-module-email@0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/integration-aws-node@0.1.15-next.0 + - @backstage/plugin-notifications-node@0.2.11-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-notifications-common@0.0.8-next.0 + +## @backstage/plugin-notifications-common@0.0.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.3.2-next.0 + +## @backstage/plugin-notifications-node@0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-signals-node@0.1.16-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-notifications-common@0.0.8-next.0 + +## @backstage/plugin-org@0.6.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-org-react@0.1.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/catalog-client@1.9.1-next.0 + +## @backstage/plugin-permission-backend@0.5.53-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + +## @backstage/plugin-permission-common@0.8.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + +## @backstage/plugin-permission-node@0.8.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-permission-react@0.4.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-proxy-backend@0.5.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + +## @backstage/plugin-scaffolder@1.27.4-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.2 + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-common@1.5.9-next.0 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend@1.29.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-scaffolder-common@1.5.9-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.1 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.1 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.5-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.6-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.1 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.5-next.1 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.5-next.1 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.2 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/integration@1.16.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.27-next.0 + +## @backstage/plugin-scaffolder-backend-module-azure@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.1 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.27-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.3.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-gcp@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-gitea@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/plugin-notifications-node@0.2.11-next.1 + - @backstage/plugin-notifications-common@0.0.8-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/plugin-scaffolder-node-test-utils@0.1.18-next.1 + +## @backstage/plugin-scaffolder-common@1.5.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-scaffolder-node@0.6.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-scaffolder-common@1.5.9-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-scaffolder-node-test-utils@0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-test-utils@1.2.1-next.1 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + +## @backstage/plugin-scaffolder-react@1.14.3-next.2 + +### Patch Changes + +- 91bb99a: Fix field extension validation not working when field is in dependencies in an array field +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-scaffolder-common@1.5.9-next.0 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/theme@0.6.3 + - @backstage/version-bridge@1.0.10 + +## @backstage/plugin-search@1.4.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/plugin-search-backend@1.8.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-openapi-utils@0.4.1-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + +## @backstage/plugin-search-backend-module-catalog@0.3.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/integration-aws-node@0.1.15-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + +## @backstage/plugin-search-backend-module-explore@0.2.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + +## @backstage/plugin-search-backend-module-pg@0.5.40-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + +## @backstage/plugin-search-backend-module-techdocs@0.3.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/plugin-techdocs-node@1.12.16-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + +## @backstage/plugin-search-backend-node@1.3.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + +## @backstage/plugin-search-common@1.2.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/plugin-permission-common@0.8.4-next.0 + +## @backstage/plugin-search-react@1.8.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/theme@0.6.3 + - @backstage/version-bridge@1.0.10 + +## @backstage/plugin-signals@0.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-signals-react@0.0.9-next.0 + - @backstage/theme@0.6.3 + +## @backstage/plugin-signals-backend@0.3.0-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-signals-node@0.1.16-next.1 + +## @backstage/plugin-signals-node@0.1.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## @backstage/plugin-signals-react@0.0.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + +## @backstage/plugin-techdocs@1.12.1-next.1 + +### Patch Changes + +- 3710b35: Allow passing down `withSearch` prop to `EntityTechdocsContent` component since it was `true` by default, now user can use the `EntityTechdocsContent` component _without_ showing the search field on top of the content. +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-auth-react@0.1.11-next.0 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/integration@1.16.1-next.0 + - @backstage/theme@0.6.3 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.44-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.12.1-next.1 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.1 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/test-utils@1.7.4-next.0 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + +## @backstage/plugin-techdocs-backend@1.11.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.1 + - @backstage/plugin-techdocs-node@1.12.16-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/integration@1.16.1-next.0 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + - @backstage/integration@1.16.1-next.0 + +## @backstage/plugin-techdocs-node@1.12.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/integration-aws-node@0.1.15-next.0 + - @backstage/integration@1.16.1-next.0 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-techdocs-react@1.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/version-bridge@1.0.10 + +## @backstage/plugin-user-settings@0.8.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-signals-react@0.0.9-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/theme@0.6.3 + - @backstage/plugin-user-settings-common@0.0.1 + +## @backstage/plugin-user-settings-backend@0.2.29-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-signals-node@0.1.16-next.1 + - @backstage/plugin-user-settings-common@0.0.1 + +## example-app@0.2.105-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.12.1-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.2 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.1 + - @backstage/plugin-api-docs@0.12.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.2 + - @backstage/frontend-app-api@0.10.4-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.1 + - @backstage/plugin-catalog-import@0.12.9-next.1 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-devtools@0.1.23-next.0 + - @backstage/plugin-home@0.8.4-next.2 + - @backstage/plugin-kubernetes@0.12.3-next.1 + - @backstage/plugin-org@0.6.35-next.1 + - @backstage/plugin-search@1.4.22-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/plugin-user-settings@0.8.18-next.1 + - @backstage/app-defaults@1.5.16-next.0 + - @backstage/cli@0.29.5-next.1 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-auth-react@0.1.11-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.13-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.1 + - @backstage/plugin-notifications@0.5.1-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/plugin-signals@0.0.15-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.1 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/theme@0.6.3 + +## example-app-next@0.0.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.12.1-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.2 + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.1 + - @backstage/plugin-api-docs@0.12.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.2 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/frontend-app-api@0.10.4-next.0 + - @backstage/frontend-defaults@0.1.5-next.0 + - @backstage/plugin-app@0.1.5-next.0 + - @backstage/plugin-app-visualizer@0.1.15-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.1 + - @backstage/plugin-catalog-import@0.12.9-next.1 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-home@0.8.4-next.2 + - @backstage/plugin-kubernetes@0.12.3-next.1 + - @backstage/plugin-org@0.6.35-next.1 + - @backstage/plugin-search@1.4.22-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/plugin-user-settings@0.8.18-next.1 + - @backstage/app-defaults@1.5.16-next.0 + - @backstage/cli@0.29.5-next.1 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-auth-react@0.1.11-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.13-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.1 + - @backstage/plugin-notifications@0.5.1-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/plugin-signals@0.0.15-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.1 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/theme@0.6.3 + +## app-next-example-plugin@0.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-components@0.16.3-next.0 + +## example-backend@0.0.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-app-backend@0.4.4-next.1 + - @backstage/plugin-auth-backend@0.24.2-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.1 + - @backstage/plugin-devtools-backend@0.5.1-next.1 + - @backstage/plugin-events-backend@0.4.1-next.1 + - @backstage/plugin-kubernetes-backend@0.19.2-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-proxy-backend@0.5.10-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.2 + - @backstage/plugin-search-backend@1.8.1-next.1 + - @backstage/plugin-signals-backend@0.3.0-next.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.1 + - @backstage/plugin-notifications-backend@0.5.1-next.1 + - @backstage/plugin-permission-backend@0.5.53-next.1 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.2 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.1 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.1 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.1 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.2 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.1 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.1 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.1 + +## example-backend-legacy@0.2.106-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-app-backend@0.4.4-next.1 + - @backstage/plugin-auth-backend@0.24.2-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-backend@0.4.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-kubernetes-backend@0.19.2-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-proxy-backend@0.5.10-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.1 + - @backstage/plugin-search-backend@1.8.1-next.1 + - @backstage/plugin-signals-backend@0.3.0-next.2 + - @backstage/plugin-signals-node@0.1.16-next.1 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.1 + - @backstage/plugin-permission-backend@0.5.53-next.1 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.1 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.1 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.1 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.1 + - @backstage/plugin-search-backend-module-pg@0.5.40-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/integration@1.16.1-next.0 + +## e2e-test@0.2.24-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.24-next.2 + - @backstage/errors@1.2.7-next.0 + - @backstage/cli-common@0.1.15 + +## @internal/frontend@0.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/types@1.2.1-next.0 + - @backstage/version-bridge@1.0.10 + +## @internal/scaffolder@0.0.5-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.2 + - @backstage/frontend-plugin-api@0.9.4-next.0 + +## techdocs-cli-embedded-app@0.2.104-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.12.1-next.1 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.1 + - @backstage/app-defaults@1.5.16-next.0 + - @backstage/cli@0.29.5-next.1 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/test-utils@1.7.4-next.0 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/theme@0.6.3 + +## @internal/plugin-todo-list@1.0.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-components@0.16.3-next.0 + +## @internal/plugin-todo-list-backend@1.0.35-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + +## @internal/plugin-todo-list-common@1.0.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.8.4-next.0 diff --git a/docs/tooling/local-dev/debugging.md b/docs/tooling/local-dev/debugging.md index 39981f2e54..65354442b2 100644 --- a/docs/tooling/local-dev/debugging.md +++ b/docs/tooling/local-dev/debugging.md @@ -56,19 +56,19 @@ In your `launch.json`, add a new entry with the following, ```jsonc { - "name": "Start Backend", - "type": "node", - "request": "launch", - "args": [ - "package", - "start" - ], - "cwd": "${workspaceFolder}/packages/backend", - "program": "${workspaceFolder}/node_modules/.bin/backstage-cli", - "skipFiles": [ - "/**" - ], - "console": "integratedTerminal" + "name": "Start Backend", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "yarn", + "args": [ + "start-backend", + "--inspect" + ], + "skipFiles": [ + "/**" + ], + "console": "integratedTerminal" }, ``` diff --git a/microsite/data/plugins/3scale.yaml b/microsite/data/plugins/3scale.yaml index fa568c17bf..1b27e1ee84 100644 --- a/microsite/data/plugins/3scale.yaml +++ b/microsite/data/plugins/3scale.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Discovery description: Synchronize 3scale content into the Backstage catalog. -documentation: https://janus-idp.io/plugins/3scale -iconUrl: https://janus-idp.io/images/plugins/3scale.svg -npmPackageName: '@janus-idp/backstage-plugin-3scale-backend' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/3scale/plugins/3scale-backend/README.md +iconUrl: /img/3scale.svg +npmPackageName: '@backstage-community/plugin-3scale-backend' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/analytics-module-matomo.yaml b/microsite/data/plugins/analytics-module-matomo.yaml index a90d2897bb..88ce08c868 100644 --- a/microsite/data/plugins/analytics-module-matomo.yaml +++ b/microsite/data/plugins/analytics-module-matomo.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Monitoring description: Track usage of your Backstage instance using Matomo Analytics. -documentation: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/README.md +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-matomo/README.md iconUrl: /img/matomo.png -npmPackageName: '@janus-idp/backstage-plugin-analytics-module-matomo' +npmPackageName: '@backstage-community/plugin-analytics-module-matomo' addedDate: '2023-10-17' diff --git a/microsite/data/plugins/cyclops-modules.yaml b/microsite/data/plugins/cyclops-modules.yaml new file mode 100644 index 0000000000..f2c083295e --- /dev/null +++ b/microsite/data/plugins/cyclops-modules.yaml @@ -0,0 +1,14 @@ +--- +title: Cyclops Modules +author: Cyclops UI +authorUrl: https://cyclops-ui.com/ +category: App Delivery +description: Manage Cyclops Modules through Backstage catalog +documentation: https://github.com/cyclops-ui/backstage-plugins#readme +iconUrl: /img/cyclops.svg +npmPackageName: '@cyclopsui/backstage-plugin-cyclops-modules' +tags: + - Kubernetes + - Productivity + - Delivery +addedDate: '2024-01-02' diff --git a/microsite/data/plugins/feedback.yaml b/microsite/data/plugins/feedback.yaml index 8e8e00165e..fce9588653 100644 --- a/microsite/data/plugins/feedback.yaml +++ b/microsite/data/plugins/feedback.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Quality description: A plugin for collecting user feedbacks for your application. # Max 170 characters -documentation: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/feedback#readme +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/entity-feedback/plugins/entity-feedback/README.md iconUrl: /img/plugin-feedback-logo.svg -npmPackageName: '@janus-idp/backstage-plugin-feedback' +npmPackageName: '@backstage-community/plugin-entity-feedback' addedDate: '2024-04-09' diff --git a/microsite/data/plugins/github-codespaces.yaml b/microsite/data/plugins/github-codespaces.yaml index 043be3200b..90f90d778c 100644 --- a/microsite/data/plugins/github-codespaces.yaml +++ b/microsite/data/plugins/github-codespaces.yaml @@ -5,7 +5,7 @@ authorUrl: https://github.com/adityasinghal26 category: Development description: Integrates GitHub Codespaces for a Backstage component with the Authenticated User. documentation: https://github.com/adityasinghal26/backstage-plugins/tree/main/plugins/github-codespaces -iconUrl: https://github.com/adityasinghal26/backstage-plugins/blob/main/plugins/github-codespaces/images/GitHubLogo.png +iconUrl: https://avatars.githubusercontent.com/u/9919?s=200&v=4 npmPackageName: '@adityasinghal26/plugin-github-codespaces' tags: - github diff --git a/microsite/data/plugins/gitops-cluster.yaml b/microsite/data/plugins/gitops-cluster.yaml index 8e67c9c25d..395ab8ec75 100644 --- a/microsite/data/plugins/gitops-cluster.yaml +++ b/microsite/data/plugins/gitops-cluster.yaml @@ -5,7 +5,6 @@ authorUrl: https://www.weave.works/ category: Kubernetes description: Create GitOps-managed Kubernetes clusters. Currently, it supports provisioning EKS clusters on GitHub via GitHub Actions. documentation: https://github.com/backstage/community-plugins/tree/main/workspaces/gitops-profiles/plugins/gitops-profiles -iconUrl: https://res-5.cloudinary.com/crunchbase-production/image/upload/c_lpad,h_256,w_256,f_auto,q_auto:eco/v1462316670/i9d3delzvx1erzjhmcws.png npmPackageName: '@backstage-community/plugin-gitops-profiles' tags: - kubernetes diff --git a/microsite/data/plugins/jfrog-artifactory.yaml b/microsite/data/plugins/jfrog-artifactory.yaml index 6765fe3d8d..b4f1ef567e 100644 --- a/microsite/data/plugins/jfrog-artifactory.yaml +++ b/microsite/data/plugins/jfrog-artifactory.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Image description: View container image details from JFrog Artifactory in Backstage. -documentation: https://janus-idp.io/plugins/jfrog-artifactory -iconUrl: https://janus-idp.io/images/plugins/jfrog-artifactory.svg -npmPackageName: '@janus-idp/backstage-plugin-jfrog-artifactory' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/jfrog-artifactory/plugins/jfrog-artifactory/README.md +iconUrl: /img/jfrog-artifactory.svg +npmPackageName: '@backstage-community/plugin-jfrog-artifactory' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/keycloak.yaml b/microsite/data/plugins/keycloak.yaml index 3da89c3d0a..4136f50f95 100644 --- a/microsite/data/plugins/keycloak.yaml +++ b/microsite/data/plugins/keycloak.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Authentication/Authorization description: Load users and groups from Keycloak, enabling use of multiple authentication providers to be applied to Backstage entities. -documentation: https://janus-idp.io/plugins/keycloak -iconUrl: https://janus-idp.io/images/plugins/keycloak.svg -npmPackageName: '@janus-idp/backstage-plugin-keycloak-backend' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/keycloak/plugins/catalog-backend-module-keycloak/README.md +iconUrl: /img/keycloak.svg +npmPackageName: '@backstage-community/plugin-catalog-backend-module-keycloak' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/kiali.yaml b/microsite/data/plugins/kiali.yaml index a85aa6444a..86299c5045 100644 --- a/microsite/data/plugins/kiali.yaml +++ b/microsite/data/plugins/kiali.yaml @@ -5,6 +5,6 @@ authorUrl: https://redhat.com category: Istio description: Configure, visualize, validate and troubleshoot your mesh with Istio documentation: https://janus-idp.io/plugins/kiali -iconUrl: https://janus-idp.io/images/plugins/kiali.svg +iconUrl: /img/kiali.svg npmPackageName: '@janus-idp/backstage-plugin-kiali' addedDate: '2023-07-25' diff --git a/microsite/data/plugins/knative-event-mesh.yaml b/microsite/data/plugins/knative-event-mesh.yaml new file mode 100644 index 0000000000..6ecb219b32 --- /dev/null +++ b/microsite/data/plugins/knative-event-mesh.yaml @@ -0,0 +1,10 @@ +--- +title: Knative Event Mesh +author: Knative Community +authorUrl: https://github.com/knative-extensions/backstage-plugins +category: Monitoring +description: A plugin that provides a way to view and manage Knative Event Mesh resources. +documentation: https://knative.dev/docs/install/installing-backstage-plugins/ +npmPackageName: '@knative-extensions/plugin-knative-event-mesh-backend' +iconUrl: https://raw.githubusercontent.com/knative/community/refs/heads/main/icons/logo.svg +addedDate: '2024-12-16' diff --git a/microsite/data/plugins/nexus-repository-manager.yaml b/microsite/data/plugins/nexus-repository-manager.yaml index aca1e366e2..77b62c841d 100644 --- a/microsite/data/plugins/nexus-repository-manager.yaml +++ b/microsite/data/plugins/nexus-repository-manager.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Image description: View information about the build artifacts in your Nexus Repository Manager in Backstage. -documentation: https://janus-idp.io/plugins/nexus-repository-manager -iconUrl: https://janus-idp.io/images/plugins/nexus-repository-manager.svg -npmPackageName: '@janus-idp/backstage-plugin-nexus-repository-manager' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/nexus-repository-manager/plugins/nexus-repository-manager/README.md +iconUrl: /img/nexus-repository-manager.svg +npmPackageName: '@backstage-community/plugin-nexus-repository-manager' addedDate: '2023-10-25' diff --git a/microsite/data/plugins/ocm.yaml b/microsite/data/plugins/ocm.yaml index 6cf77ca678..1756029b27 100644 --- a/microsite/data/plugins/ocm.yaml +++ b/microsite/data/plugins/ocm.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Infrastructure description: View clusters from OCM's MultiClusterHub and MultiCluster Engine in Backstage. -documentation: https://janus-idp.io/plugins/ocm -iconUrl: https://janus-idp.io/images/plugins/ocm.svg -npmPackageName: '@janus-idp/backstage-plugin-ocm' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/ocm/plugins/ocm/README.md +iconUrl: /img/ocm.svg +npmPackageName: '@backstage-community/plugin-ocm' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/quay.yaml b/microsite/data/plugins/quay.yaml index 79ae1c3408..9bcbf82de8 100644 --- a/microsite/data/plugins/quay.yaml +++ b/microsite/data/plugins/quay.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Image description: View container image details from Quay in Backstage. -documentation: https://janus-idp.io/plugins/quay -iconUrl: https://janus-idp.io/images/plugins/quay.svg -npmPackageName: '@janus-idp/backstage-plugin-quay' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/quay/plugins/quay/README.md +iconUrl: /img/quay.svg +npmPackageName: '@backstage-community/plugin-quay' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/rollbar.yaml b/microsite/data/plugins/rollbar.yaml index 0dd39d5fe9..3777705b38 100644 --- a/microsite/data/plugins/rollbar.yaml +++ b/microsite/data/plugins/rollbar.yaml @@ -5,6 +5,6 @@ authorUrl: https://github.com/andrewthauer category: Monitoring description: View Rollbar errors for your services in Backstage. documentation: https://github.com/backstage/community-plugins/tree/main/workspaces/rollbar/plugins/rollbar -iconUrl: https://rollbar.com/assets/media/rollbar-mark-color.png +iconUrl: https://cdn.rollbar.com/wp-content/themes/rollbar/assets/img/logo-white-rollbar.svg npmPackageName: '@backstage-community/plugin-rollbar' addedDate: '2020-11-03' diff --git a/microsite/data/plugins/scaffolder-backend-datolabs-gcp.yaml b/microsite/data/plugins/scaffolder-backend-datolabs-gcp.yaml new file mode 100644 index 0000000000..528506c02d --- /dev/null +++ b/microsite/data/plugins/scaffolder-backend-datolabs-gcp.yaml @@ -0,0 +1,10 @@ +--- +title: Scaffolder Google Cloud Platform (GCP) actions +author: Datolabs +authorUrl: https://www.datolabs.io +category: Scaffolder +description: A collection of actions for interacting with Google Cloud Platform (GCP). +documentation: https://github.com/datolabs-io/backstage-plugins/blob/main/workspaces/scaffolder-backend-module-gcp/plugins/scaffolder-backend-module-gcp/README.md +iconUrl: https://avatars1.githubusercontent.com/u/2810941?s=280&v=4 +npmPackageName: '@datolabs/plugin-scaffolder-backend-module-gcp' +addedDate: '2024-12-20' diff --git a/microsite/data/plugins/tech-radar.yaml b/microsite/data/plugins/tech-radar.yaml index 37f4e02b92..5db68eef27 100644 --- a/microsite/data/plugins/tech-radar.yaml +++ b/microsite/data/plugins/tech-radar.yaml @@ -5,6 +5,6 @@ authorUrl: https://github.com/spotify category: Discovery description: Visualize the your company's official guidelines of different areas of software development. documentation: https://github.com/backstage/community-plugins/tree/main/workspaces/tech-radar/plugins/tech-radar -iconUrl: https://www.materialui.co/materialIcons/action/track_changes_white_192x192.png +iconUrl: /img/tech-radar.svg npmPackageName: '@backstage-community/plugin-tech-radar' addedDate: '2020-11-03' diff --git a/microsite/data/plugins/tekton.yaml b/microsite/data/plugins/tekton.yaml index 27540a81d3..71aa433a83 100644 --- a/microsite/data/plugins/tekton.yaml +++ b/microsite/data/plugins/tekton.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: CI/CD description: Easily view Tekton PipelineRun status for your services in Backstage. -documentation: https://janus-idp.io/plugins/tekton -iconUrl: https://janus-idp.io/images/plugins/tekton.svg -npmPackageName: '@janus-idp/backstage-plugin-tekton' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/tekton/plugins/tekton/README.md +iconUrl: /img/tekton.svg +npmPackageName: '@backstage-community/plugin-tekton' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/topology.yaml b/microsite/data/plugins/topology.yaml index 9d3b816bd4..f1b74ef45b 100644 --- a/microsite/data/plugins/topology.yaml +++ b/microsite/data/plugins/topology.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Kubernetes description: Visualize the deployment status and related resources of your applications deployed on any Kubernetes cluster. -documentation: https://janus-idp.io/plugins/topology -iconUrl: https://janus-idp.io/images/plugins/topology.svg -npmPackageName: '@janus-idp/backstage-plugin-topology' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/topology/plugins/topology/README.md +iconUrl: /img/topology.svg +npmPackageName: '@backstage-community/plugin-topology' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/wiz.yaml b/microsite/data/plugins/wiz.yaml new file mode 100644 index 0000000000..1496231dfa --- /dev/null +++ b/microsite/data/plugins/wiz.yaml @@ -0,0 +1,10 @@ +--- +title: Wiz +author: roadie.io +authorUrl: https://github.com/RoadieHQ +category: Monitoring +description: View Wiz issues status in Backstage. +documentation: https://roadie.io/backstage/plugins/wiz/ +iconUrl: https://roadie.io/images/wiz-logo.png +npmPackageName: '@roadiehq/backstage-plugin-wiz' +addedDate: '2024-10-14' diff --git a/microsite/sidebars.js b/microsite/sidebars.js index 6074de0d0b..2474b15aac 100644 --- a/microsite/sidebars.js +++ b/microsite/sidebars.js @@ -102,7 +102,11 @@ module.exports = { { type: 'category', label: 'Notifications', - items: ['notifications/index'], + items: [ + 'notifications/index', + 'notifications/processors', + 'notifications/usage', + ], }, { type: 'category', diff --git a/microsite/src/pages/community/index.tsx b/microsite/src/pages/community/index.tsx index a32f5edd13..171a5efcdf 100644 --- a/microsite/src/pages/community/index.tsx +++ b/microsite/src/pages/community/index.tsx @@ -101,6 +101,16 @@ const Community = () => { url: 'https://statusneo.com/backstage', logo: 'img/partner-logo-statusneo.png', }, + { + name: 'Alauda', + url: 'https://www.alauda.io/community/169249', + logo: 'img/partner-logo-alauda.png', + }, + { + name: 'Liatrio', + url: 'https://www.liatrio.com/service-offerings/backstage', + logo: 'img/partner-logo-liatrio.png', + }, ]; //#endregion diff --git a/microsite/static/img/3scale.svg b/microsite/static/img/3scale.svg new file mode 100644 index 0000000000..46551958aa --- /dev/null +++ b/microsite/static/img/3scale.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/cyclops.svg b/microsite/static/img/cyclops.svg new file mode 100644 index 0000000000..fbc297443c --- /dev/null +++ b/microsite/static/img/cyclops.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/microsite/static/img/jfrog-artifactory.svg b/microsite/static/img/jfrog-artifactory.svg new file mode 100644 index 0000000000..ded672b4bc --- /dev/null +++ b/microsite/static/img/jfrog-artifactory.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/keycloak.svg b/microsite/static/img/keycloak.svg new file mode 100644 index 0000000000..871bd5b0f8 --- /dev/null +++ b/microsite/static/img/keycloak.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/kiali.svg b/microsite/static/img/kiali.svg new file mode 100644 index 0000000000..bfc8510040 --- /dev/null +++ b/microsite/static/img/kiali.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/nexus-repository-manager.svg b/microsite/static/img/nexus-repository-manager.svg new file mode 100644 index 0000000000..6f145811cc --- /dev/null +++ b/microsite/static/img/nexus-repository-manager.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/microsite/static/img/ocm.svg b/microsite/static/img/ocm.svg new file mode 100644 index 0000000000..6ee5c74f9e --- /dev/null +++ b/microsite/static/img/ocm.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/partner-logo-alauda.png b/microsite/static/img/partner-logo-alauda.png new file mode 100644 index 0000000000..b43719deb9 Binary files /dev/null and b/microsite/static/img/partner-logo-alauda.png differ diff --git a/microsite/static/img/partner-logo-liatrio.png b/microsite/static/img/partner-logo-liatrio.png new file mode 100644 index 0000000000..bd6238cf8c Binary files /dev/null and b/microsite/static/img/partner-logo-liatrio.png differ diff --git a/microsite/static/img/quay.svg b/microsite/static/img/quay.svg new file mode 100644 index 0000000000..cf3c5e435e --- /dev/null +++ b/microsite/static/img/quay.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/tech-radar.svg b/microsite/static/img/tech-radar.svg new file mode 100644 index 0000000000..350ff4f9cc --- /dev/null +++ b/microsite/static/img/tech-radar.svg @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/microsite/static/img/tekton.svg b/microsite/static/img/tekton.svg new file mode 100644 index 0000000000..a5fdd252df --- /dev/null +++ b/microsite/static/img/tekton.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/topology.svg b/microsite/static/img/topology.svg new file mode 100644 index 0000000000..21d84a888a --- /dev/null +++ b/microsite/static/img/topology.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/yarn.lock b/microsite/yarn.lock index c6543f53dd..ef2b96b95d 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2840,90 +2840,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-darwin-arm64@npm:1.9.3" +"@swc/core-darwin-arm64@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-darwin-arm64@npm:1.10.6" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-darwin-x64@npm:1.9.3" +"@swc/core-darwin-x64@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-darwin-x64@npm:1.10.6" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.3" +"@swc/core-linux-arm-gnueabihf@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.10.6" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-linux-arm64-gnu@npm:1.9.3" +"@swc/core-linux-arm64-gnu@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-linux-arm64-gnu@npm:1.10.6" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-linux-arm64-musl@npm:1.9.3" +"@swc/core-linux-arm64-musl@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-linux-arm64-musl@npm:1.10.6" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-linux-x64-gnu@npm:1.9.3" +"@swc/core-linux-x64-gnu@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-linux-x64-gnu@npm:1.10.6" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-linux-x64-musl@npm:1.9.3" +"@swc/core-linux-x64-musl@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-linux-x64-musl@npm:1.10.6" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-win32-arm64-msvc@npm:1.9.3" +"@swc/core-win32-arm64-msvc@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-win32-arm64-msvc@npm:1.10.6" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-win32-ia32-msvc@npm:1.9.3" +"@swc/core-win32-ia32-msvc@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-win32-ia32-msvc@npm:1.10.6" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.9.3": - version: 1.9.3 - resolution: "@swc/core-win32-x64-msvc@npm:1.9.3" +"@swc/core-win32-x64-msvc@npm:1.10.6": + version: 1.10.6 + resolution: "@swc/core-win32-x64-msvc@npm:1.10.6" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.9.3 - resolution: "@swc/core@npm:1.9.3" + version: 1.10.6 + resolution: "@swc/core@npm:1.10.6" dependencies: - "@swc/core-darwin-arm64": 1.9.3 - "@swc/core-darwin-x64": 1.9.3 - "@swc/core-linux-arm-gnueabihf": 1.9.3 - "@swc/core-linux-arm64-gnu": 1.9.3 - "@swc/core-linux-arm64-musl": 1.9.3 - "@swc/core-linux-x64-gnu": 1.9.3 - "@swc/core-linux-x64-musl": 1.9.3 - "@swc/core-win32-arm64-msvc": 1.9.3 - "@swc/core-win32-ia32-msvc": 1.9.3 - "@swc/core-win32-x64-msvc": 1.9.3 + "@swc/core-darwin-arm64": 1.10.6 + "@swc/core-darwin-x64": 1.10.6 + "@swc/core-linux-arm-gnueabihf": 1.10.6 + "@swc/core-linux-arm64-gnu": 1.10.6 + "@swc/core-linux-arm64-musl": 1.10.6 + "@swc/core-linux-x64-gnu": 1.10.6 + "@swc/core-linux-x64-musl": 1.10.6 + "@swc/core-win32-arm64-msvc": 1.10.6 + "@swc/core-win32-ia32-msvc": 1.10.6 + "@swc/core-win32-x64-msvc": 1.10.6 "@swc/counter": ^0.1.3 "@swc/types": ^0.1.17 peerDependencies: @@ -2952,7 +2952,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 4d83aee0b4d9c543f247d680796e5b9cb69997369dcd81642c2603e185312dfb1674328a7ceb1d352c21275155a71789f76dafe8853055d076b6241d5760bbed + checksum: 574595e21c0b23904a8813b8c698aa32a66f47faa8c0e3b52c1cd2e2f764eb7cbc587d253a16070db18c518b55d9f88146ecf9a1b3e308471a8e2290078bc7e9 languageName: node linkType: hard diff --git a/mkdocs.yml b/mkdocs.yml index 748cdd8232..a7e693e5fc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -158,6 +158,10 @@ nav: - Reading Backstage Configuration: 'conf/reading.md' - Writing Backstage Configuration: 'conf/writing.md' - Defining Configuration for your Plugin: 'conf/defining.md' + - Notifications: + - Getting Started: 'notifications/index.md' + - Usage: 'notifications/usage.md' + - Processors: 'notifications/processors.md' - Authentication and identity: - Adding Authentication: 'auth/index.md' - Included providers: diff --git a/package.json b/package.json index b364b2986b..41533ef516 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "1.34.0", + "version": "1.35.0-next.2", "private": true, "repository": { "type": "git", @@ -23,8 +23,8 @@ "build:plugins-report": "node ./scripts/build-plugins-report", "clean": "backstage-cli repo clean", "create-plugin": "echo \"use 'yarn new' instead\"", - "dev": "yarn workspaces foreach -A --include example-backend --include example-app --parallel -v -i run start", - "dev:next": "yarn workspaces foreach -A --include example-backend --include example-app-next --parallel -v -i run start", + "dev": "yarn workspaces foreach -A --include example-backend --include example-app --parallel --jobs unlimited -v -i run start", + "dev:next": "yarn workspaces foreach -A --include example-backend --include example-app-next --parallel --jobs unlimited -v -i run start", "docker-build": "yarn tsc && yarn workspace example-backend build && yarn workspace example-backend build-image", "fix": "backstage-cli repo fix --publish", "postinstall": "husky || true", @@ -43,7 +43,7 @@ "start": "yarn workspace example-app start", "start-backend": "yarn workspace example-backend start", "start-backend:legacy": "yarn workspace example-backend-legacy start", - "start:lighthouse": "yarn workspaces foreach -A --include example-backend --include example-app --parallel -v -i run start", + "start:lighthouse": "yarn workspaces foreach -A --include example-backend --include example-app --parallel --jobs unlimited -v -i run start", "start:microsite": "cd microsite/ && yarn start", "start:next": "yarn workspace example-app-next start", "storybook": "yarn ./storybook run storybook", @@ -84,6 +84,9 @@ ] }, "prettier": "@backstage/cli/config/prettier", + "jest": { + "rejectFrontendNetworkRequests": true + }, "resolutions": { "@changesets/assemble-release-plan@^6.0.0": "patch:@changesets/assemble-release-plan@npm%3A6.0.0#./.yarn/patches/@changesets-assemble-release-plan-npm-6.0.0-f7b3005037.patch", "@material-ui/pickers@^3.2.10": "patch:@material-ui/pickers@npm%3A3.3.11#./.yarn/patches/@material-ui-pickers-npm-3.3.11-1c8f68ea20.patch", @@ -134,9 +137,6 @@ "sort-package-json": "^2.8.0", "typescript": "~5.2.0" }, - "jest": { - "rejectFrontendNetworkRequests": true - }, "packageManager": "yarn@3.8.1", "engines": { "node": "20 || 22" diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 91b769a9d8..cbbe7e9562 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/app-defaults +## 1.5.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/theme@0.6.3 + ## 1.5.15 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index ab4bb267c3..207da40eeb 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/app-defaults", - "version": "1.5.15", + "version": "1.5.16-next.0", "description": "Provides the default wiring of a Backstage App", "backstage": { "role": "web-library" diff --git a/packages/app-next-example-plugin/CHANGELOG.md b/packages/app-next-example-plugin/CHANGELOG.md index 45368a7c8c..cc5ac8b148 100644 --- a/packages/app-next-example-plugin/CHANGELOG.md +++ b/packages/app-next-example-plugin/CHANGELOG.md @@ -1,5 +1,13 @@ # app-next-example-plugin +## 0.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-components@0.16.3-next.0 + ## 0.0.18 ### Patch Changes diff --git a/packages/app-next-example-plugin/package.json b/packages/app-next-example-plugin/package.json index a1c4a67bf6..22c0b7edf9 100644 --- a/packages/app-next-example-plugin/package.json +++ b/packages/app-next-example-plugin/package.json @@ -1,6 +1,6 @@ { "name": "app-next-example-plugin", - "version": "0.0.18", + "version": "0.0.19-next.0", "description": "Backstage internal example plugin", "backstage": { "role": "frontend-plugin", diff --git a/packages/app-next/CHANGELOG.md b/packages/app-next/CHANGELOG.md index 42643c9422..3770cb564c 100644 --- a/packages/app-next/CHANGELOG.md +++ b/packages/app-next/CHANGELOG.md @@ -1,5 +1,123 @@ # example-app-next +## 0.0.19-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.12.1-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.2 + - @backstage/frontend-plugin-api@0.9.4-next.0 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.1 + - @backstage/plugin-api-docs@0.12.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.2 + - @backstage/core-compat-api@0.3.5-next.0 + - @backstage/frontend-app-api@0.10.4-next.0 + - @backstage/frontend-defaults@0.1.5-next.0 + - @backstage/plugin-app@0.1.5-next.0 + - @backstage/plugin-app-visualizer@0.1.15-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.1 + - @backstage/plugin-catalog-import@0.12.9-next.1 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-home@0.8.4-next.2 + - @backstage/plugin-kubernetes@0.12.3-next.1 + - @backstage/plugin-org@0.6.35-next.1 + - @backstage/plugin-search@1.4.22-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/plugin-user-settings@0.8.18-next.1 + - @backstage/app-defaults@1.5.16-next.0 + - @backstage/cli@0.29.5-next.1 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-auth-react@0.1.11-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.13-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.1 + - @backstage/plugin-notifications@0.5.1-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/plugin-signals@0.0.15-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.1 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/theme@0.6.3 + +## 0.0.19-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-home@0.8.4-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.1 + - @backstage/plugin-api-docs@0.12.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.0 + - @backstage/plugin-catalog-import@0.12.9-next.0 + - @backstage/plugin-kubernetes@0.12.3-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.0 + - @backstage/plugin-org@0.6.35-next.0 + - @backstage/plugin-search@1.4.22-next.0 + - @backstage/plugin-techdocs@1.12.1-next.0 + - @backstage/plugin-user-settings@0.8.18-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/integration-react@1.2.2 + - @backstage/plugin-app@0.1.4 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-signals@0.0.14 + - @backstage/core-compat-api@0.3.4 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + +## 0.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/frontend-defaults@0.1.4 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-app@0.1.4 + - @backstage/plugin-app-visualizer@0.1.14 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + ## 0.0.18 ### Patch Changes diff --git a/packages/app-next/package.json b/packages/app-next/package.json index 32d7c64c1c..621c759317 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -1,6 +1,6 @@ { "name": "example-app-next", - "version": "0.0.18", + "version": "0.0.19-next.2", "backstage": { "role": "frontend" }, diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index e843425c8a..53964609ee 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,114 @@ # example-app +## 0.2.105-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-techdocs@1.12.1-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.2 + - @backstage/core-plugin-api@1.10.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.1 + - @backstage/plugin-api-docs@0.12.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.2 + - @backstage/frontend-app-api@0.10.4-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.1 + - @backstage/plugin-catalog-import@0.12.9-next.1 + - @backstage/plugin-catalog-react@1.15.1-next.1 + - @backstage/plugin-devtools@0.1.23-next.0 + - @backstage/plugin-home@0.8.4-next.2 + - @backstage/plugin-kubernetes@0.12.3-next.1 + - @backstage/plugin-org@0.6.35-next.1 + - @backstage/plugin-search@1.4.22-next.1 + - @backstage/plugin-search-react@1.8.5-next.0 + - @backstage/plugin-user-settings@0.8.18-next.1 + - @backstage/app-defaults@1.5.16-next.0 + - @backstage/cli@0.29.5-next.1 + - @backstage/core-app-api@1.15.4-next.0 + - @backstage/core-components@0.16.3-next.0 + - @backstage/integration-react@1.2.3-next.0 + - @backstage/plugin-auth-react@0.1.11-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.13-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.1 + - @backstage/plugin-notifications@0.5.1-next.0 + - @backstage/plugin-permission-react@0.4.30-next.0 + - @backstage/plugin-signals@0.0.15-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.1 + - @backstage/plugin-techdocs-react@1.2.13-next.0 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-catalog-common@1.1.3-next.0 + - @backstage/theme@0.6.3 + +## 0.2.105-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-react@1.15.1-next.0 + - @backstage/plugin-home@0.8.4-next.1 + - @backstage/plugin-scaffolder-react@1.14.3-next.1 + - @backstage/plugin-scaffolder@1.27.4-next.1 + - @backstage/plugin-api-docs@0.12.3-next.0 + - @backstage/plugin-catalog@1.26.1-next.0 + - @backstage/plugin-catalog-graph@0.4.15-next.0 + - @backstage/plugin-catalog-import@0.12.9-next.0 + - @backstage/plugin-kubernetes@0.12.3-next.0 + - @backstage/plugin-kubernetes-cluster@0.0.21-next.0 + - @backstage/plugin-org@0.6.35-next.0 + - @backstage/plugin-search@1.4.22-next.0 + - @backstage/plugin-techdocs@1.12.1-next.0 + - @backstage/plugin-user-settings@0.8.18-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/integration-react@1.2.2 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-devtools@0.1.22 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + +## 0.2.105-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-devtools@0.1.22 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + ## 0.2.104 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index 1b919f00b7..25c40c08c8 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.104", + "version": "0.2.105-next.2", "backstage": { "role": "frontend" }, diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 53deec8525..c675aeddb3 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/backend-app-api +## 1.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/cli-common@0.1.15 + +## 1.1.1-next.0 + +### Patch Changes + +- 02534c7: Corrected spelling mistake in error message +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 1.1.0 ### Minor Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index e16bbb48ee..7595af8ecc 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-app-api", - "version": "1.1.0", + "version": "1.1.1-next.1", "description": "Core API used by Backstage backend apps", "backstage": { "role": "node-library" diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.ts index 90b108206e..c4b9dcb2a3 100644 --- a/packages/backend-app-api/src/wiring/ServiceRegistry.ts +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.ts @@ -22,8 +22,8 @@ import { } from '@backstage/backend-plugin-api'; import { ConflictError, stringifyError } from '@backstage/errors'; // Direct internal import to avoid duplication -// eslint-disable-next-line @backstage/no-forbidden-package-imports -import { InternalServiceFactory } from '@backstage/backend-plugin-api/src/services/system/types'; +// eslint-disable-next-line @backstage/no-relative-monorepo-imports +import { InternalServiceFactory } from '../../../backend-plugin-api/src/services/system/types'; import { DependencyGraph } from '../lib/DependencyGraph'; /** * Keep in sync with `@backstage/backend-plugin-api/src/services/system/types.ts` diff --git a/packages/backend-app-api/src/wiring/createInitializationLogger.ts b/packages/backend-app-api/src/wiring/createInitializationLogger.ts index de323f914b..2a472dec5b 100644 --- a/packages/backend-app-api/src/wiring/createInitializationLogger.ts +++ b/packages/backend-app-api/src/wiring/createInitializationLogger.ts @@ -75,7 +75,7 @@ export function createInitializationLogger( ? `, waiting for ${starting.size} other plugins to finish before shutting down the process` : ''; logger?.error( - `Plugin '${pluginId}' thew an error during startup${status}`, + `Plugin '${pluginId}' threw an error during startup${status}`, ); }, onAllStarted() { diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index b648e98da6..485def32bd 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,54 @@ # @backstage/backend-defaults +## 0.7.0-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-app-api@1.1.1-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/cli-node@0.2.12-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/integration-aws-node@0.1.15-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/cli-common@0.1.15 + - @backstage/integration@1.16.1-next.0 + +## 0.7.0-next.0 + +### Minor Changes + +- ec547b8: Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. + + If you were using the standard `MiddlewareFactory` just to put an `error` middleware in you router, you can now remove that at your earliest convenience since it's redundant. If you have custom error handlers in your plugin router, those will continue to function as previously. If you were relying on thrown errors propagating all the way down to the root HTTP router, you will find that they no longer do that, and may want to hoist your error handling up to the plugin level instead. + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- 8ecf8cb: Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.6.0 ### Minor Changes diff --git a/packages/backend-defaults/config.d.ts b/packages/backend-defaults/config.d.ts index e2a748f85d..aa97313921 100644 --- a/packages/backend-defaults/config.d.ts +++ b/packages/backend-defaults/config.d.ts @@ -86,6 +86,19 @@ export interface Config { * Options used by the default auth, httpAuth and userInfo services. */ auth?: { + /** + * Keys shared by all backends for signing and validating backend tokens. + * @deprecated this will be removed when the backwards compatibility is no longer needed with backend-common + */ + keys?: { + /** + * Secret for generating tokens. Should be a base64 string, recommended + * length is 24 bytes. + * + * @visibility secret + */ + secret: string; + }[]; /** * This disables the otherwise default auth policy, which requires all * requests to be authenticated with either user or service credentials. diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 7c37e5dede..e29bb0da81 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-defaults", - "version": "0.6.0", + "version": "0.7.0-next.1", "description": "Backend defaults used by Backstage backend apps", "backstage": { "role": "node-library" diff --git a/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts b/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts index 44f0082424..f956ceb70a 100644 --- a/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts +++ b/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts @@ -22,7 +22,7 @@ import { FlattenedJWSInput, JWSHeaderParameters, } from 'jose'; -import { GetKeyFunction } from 'jose/dist/types/types'; +import { GetKeyFunction } from 'jose'; const CLOCK_MARGIN_S = 10; diff --git a/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts b/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts index 658a88a368..eb863a807a 100644 --- a/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts +++ b/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts @@ -18,7 +18,7 @@ import { Config } from '@backstage/config'; import { HumanDuration, durationToMilliseconds } from '@backstage/types'; import { promises as fs } from 'fs'; import { JWK, exportJWK, importPKCS8, importSPKI } from 'jose'; -import { KeyLike } from 'jose/dist/types/types'; +import { KeyLike } from 'jose'; import { KeyPayload } from './types'; import { PluginKeySource } from './types'; diff --git a/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts b/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts index 75e7d35eee..5ca70cab86 100644 --- a/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts +++ b/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts @@ -28,7 +28,7 @@ import { Knex } from 'knex'; import { MysqlConnector } from './connectors/mysql'; import { PgConnector } from './connectors/postgres'; import { Sqlite3Connector } from './connectors/sqlite3'; -import { Connector, PluginDatabaseManager } from './types'; +import { Connector } from './types'; /** * Provides a config lookup path for a plugin's config block. @@ -72,7 +72,7 @@ export class DatabaseManagerImpl { } /** - * Generates a PluginDatabaseManager for consumption by plugins. + * Generates a DatabaseService for consumption by plugins. * * @param pluginId - The plugin that the database manager should be created for. Plugin names * should be unique as they are used to look up database config overrides under @@ -84,7 +84,7 @@ export class DatabaseManagerImpl { logger: LoggerService; lifecycle: LifecycleService; }, - ): PluginDatabaseManager { + ): DatabaseService { const client = this.getClientType(pluginId).client; const connector = this.connectors[client]; if (!connector) { @@ -265,7 +265,7 @@ export class DatabaseManager { private constructor(private readonly impl: DatabaseManagerImpl) {} /** - * Generates a PluginDatabaseManager for consumption by plugins. + * Generates a DatabaseService for consumption by plugins. * * @param pluginId - The plugin that the database manager should be created for. Plugin names * should be unique as they are used to look up database config overrides under @@ -277,7 +277,7 @@ export class DatabaseManager { logger: LoggerService; lifecycle: LifecycleService; }, - ): PluginDatabaseManager { + ): DatabaseService { return this.impl.forPlugin(pluginId, deps); } } diff --git a/packages/backend-defaults/src/entrypoints/database/types.ts b/packages/backend-defaults/src/entrypoints/database/types.ts index beded85d65..2a264ed928 100644 --- a/packages/backend-defaults/src/entrypoints/database/types.ts +++ b/packages/backend-defaults/src/entrypoints/database/types.ts @@ -17,8 +17,6 @@ import { LifecycleService, LoggerService } from '@backstage/backend-plugin-api'; import { Knex } from 'knex'; -export type { DatabaseService as PluginDatabaseManager } from '@backstage/backend-plugin-api'; - export interface Connector { getClient( pluginId: string, diff --git a/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts b/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts index 47793c82f7..b6c2c38d8a 100644 --- a/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts +++ b/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts @@ -24,7 +24,7 @@ import { readHttpServerOptions } from '../rootHttpRouter/http/config'; type Target = string | { internal: string; external: string }; /** - * HostDiscovery is a basic PluginEndpointDiscovery implementation + * HostDiscovery is a basic DiscoveryService implementation * that can handle plugins that are hosted in a single or multiple deployments. * * The deployment may be scaled horizontally, as long as the external URL diff --git a/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts b/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts index 6f8792aa3d..1f2b989018 100644 --- a/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts +++ b/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts @@ -27,6 +27,7 @@ import { createCredentialsBarrier, createAuthIntegrationRouter, } from './http'; +import { MiddlewareFactory } from '../rootHttpRouter'; /** * HTTP route registration for plugins. @@ -47,8 +48,17 @@ export const httpRouterServiceFactory = createServiceFactory({ rootHttpRouter: coreServices.rootHttpRouter, auth: coreServices.auth, httpAuth: coreServices.httpAuth, + logger: coreServices.logger, }, - async factory({ auth, httpAuth, config, plugin, rootHttpRouter, lifecycle }) { + async factory({ + auth, + httpAuth, + config, + plugin, + rootHttpRouter, + lifecycle, + logger, + }) { const router = PromiseRouter(); rootHttpRouter.use(`/api/${plugin.getId()}`, router); @@ -63,9 +73,15 @@ export const httpRouterServiceFactory = createServiceFactory({ router.use(credentialsBarrier.middleware); router.use(createCookieAuthRefreshMiddleware({ auth, httpAuth })); + const pluginRoutes = PromiseRouter(); + router.use(pluginRoutes); + + const middleware = MiddlewareFactory.create({ config, logger }); + router.use(middleware.error()); + return { use(handler: Handler): void { - router.use(handler); + pluginRoutes.use(handler); }, addAuthPolicy(policy: HttpRouterServiceAuthPolicy): void { credentialsBarrier.addAuthPolicy(policy); diff --git a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts index 510fdd9586..fc1fc59bcb 100644 --- a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts +++ b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts @@ -17,7 +17,6 @@ import { Config } from '@backstage/config'; import helmet from 'helmet'; import { HelmetOptions } from 'helmet'; -import { ContentSecurityPolicyOptions } from 'helmet/dist/types/middlewares/content-security-policy'; import kebabCase from 'lodash/kebabCase'; /** @@ -81,10 +80,15 @@ function readCspDirectives(config?: Config): CspDirectives { return result; } +type ContentSecurityPolicyDirectives = Exclude< + HelmetOptions['contentSecurityPolicy'], + boolean | undefined +>['directives']; + export function applyCspDirectives( directives: CspDirectives, -): ContentSecurityPolicyOptions['directives'] { - const result: ContentSecurityPolicyOptions['directives'] = +): ContentSecurityPolicyDirectives { + const result: ContentSecurityPolicyDirectives = helmet.contentSecurityPolicy.getDefaultDirectives(); // TODO(Rugvip): We currently use non-precompiled AJV for validation in the frontend, which uses eval. diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts index c1d8c02a53..77a8d31623 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +// NOTE(freben): Intentionally uses node-fetch because of https://github.com/backstage/backstage/issues/28190 +import fetch, { Response } from 'node-fetch'; + import { UrlReaderService, UrlReaderServiceReadTreeOptions, @@ -34,8 +37,10 @@ import { import parseGitUrl from 'git-url-parse'; import { trimEnd, trimStart } from 'lodash'; import { Minimatch } from 'minimatch'; +import { Readable } from 'stream'; import { ReadUrlResponseFactory } from './ReadUrlResponseFactory'; import { ReadTreeResponseFactory, ReaderFactory } from './types'; +import { parseLastModified } from './util'; /** * Implements a {@link @backstage/backend-plugin-api#UrlReaderService} for files on GitLab. @@ -98,7 +103,12 @@ export class GitlabUrlReader implements UrlReaderService { } if (response.ok) { - return ReadUrlResponseFactory.fromResponse(response); + return ReadUrlResponseFactory.fromNodeJSReadable(response.body, { + etag: response.headers.get('ETag') ?? undefined, + lastModifiedAt: parseLastModified( + response.headers.get('Last-Modified'), + ), + }); } const message = `${url} could not be read as ${builtUrl}, ${response.status} ${response.statusText}`; @@ -220,7 +230,7 @@ export class GitlabUrlReader implements UrlReaderService { } return await this.deps.treeResponseFactory.fromTarArchive({ - response: archiveGitLabResponse, + stream: Readable.from(archiveGitLabResponse.body), subpath: filepath, etag: commitSha, filter: options?.filter, diff --git a/packages/backend-dynamic-feature-service/CHANGELOG.md b/packages/backend-dynamic-feature-service/CHANGELOG.md index 6d6a001839..c465d51571 100644 --- a/packages/backend-dynamic-feature-service/CHANGELOG.md +++ b/packages/backend-dynamic-feature-service/CHANGELOG.md @@ -1,5 +1,56 @@ # @backstage/backend-dynamic-feature-service +## 0.5.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-app-api@1.1.1-next.1 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/cli-node@0.2.12-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/config-loader@1.9.5-next.1 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-events-backend@0.4.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.1 + - @backstage/plugin-search-common@1.2.17-next.0 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/plugin-app-node@0.1.29-next.1 + - @backstage/cli-common@0.1.15 + +## 0.5.3-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-app-node@0.1.29-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 0.5.2 ### Patch Changes diff --git a/packages/backend-dynamic-feature-service/package.json b/packages/backend-dynamic-feature-service/package.json index c0696feba2..c412933d30 100644 --- a/packages/backend-dynamic-feature-service/package.json +++ b/packages/backend-dynamic-feature-service/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-dynamic-feature-service", - "version": "0.5.2", + "version": "0.5.3-next.1", "description": "Backstage dynamic feature service", "backstage": { "role": "node-library" diff --git a/packages/backend-dynamic-feature-service/report.api.md b/packages/backend-dynamic-feature-service/report.api.md index 6e53f3747f..e2ad34c84d 100644 --- a/packages/backend-dynamic-feature-service/report.api.md +++ b/packages/backend-dynamic-feature-service/report.api.md @@ -8,6 +8,8 @@ import { BackstagePackageJson } from '@backstage/cli-node'; import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; import { Config } from '@backstage/config'; import { ConfigSchema } from '@backstage/config-loader'; +import { DatabaseService } from '@backstage/backend-plugin-api'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; import { EventBroker } from '@backstage/plugin-events-node'; import { EventsBackend } from '@backstage/plugin-events-backend'; import { EventsService } from '@backstage/plugin-events-node'; @@ -22,8 +24,6 @@ import { PackageRole } from '@backstage/cli-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { PermissionPolicy } from '@backstage/plugin-permission-node'; import { PluginCacheManager } from '@backstage/backend-common'; -import { PluginDatabaseManager } from '@backstage/backend-common'; -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { RootLoggerService } from '@backstage/backend-plugin-api'; import { Router } from 'express'; import { SchedulerService } from '@backstage/backend-plugin-api'; @@ -274,10 +274,10 @@ export interface LegacyBackendPluginInstaller { export type LegacyPluginEnvironment = { logger: Logger; cache: PluginCacheManager; - database: PluginDatabaseManager; + database: DatabaseService; config: Config; reader: UrlReaderService; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; permissions: PermissionEvaluator; scheduler: SchedulerService; diff --git a/packages/backend-dynamic-feature-service/src/manager/types.ts b/packages/backend-dynamic-feature-service/src/manager/types.ts index 89ac140bc6..d056a9a1b2 100644 --- a/packages/backend-dynamic-feature-service/src/manager/types.ts +++ b/packages/backend-dynamic-feature-service/src/manager/types.ts @@ -16,12 +16,7 @@ import { Logger } from 'winston'; import { Config } from '@backstage/config'; -import { - PluginCacheManager, - PluginDatabaseManager, - PluginEndpointDiscovery, - TokenManager, -} from '@backstage/backend-common'; +import { PluginCacheManager, TokenManager } from '@backstage/backend-common'; import { Router } from 'express'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; @@ -36,6 +31,8 @@ import { UrlReaderService, SchedulerService, SchedulerServiceTaskRunner, + DatabaseService, + DiscoveryService, } from '@backstage/backend-plugin-api'; import { PackagePlatform, PackageRole } from '@backstage/cli-node'; import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; @@ -60,10 +57,10 @@ import { ScannedPluginPackage } from '../scanner'; export type LegacyPluginEnvironment = { logger: Logger; cache: PluginCacheManager; - database: PluginDatabaseManager; + database: DatabaseService; config: Config; reader: UrlReaderService; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; permissions: PermissionEvaluator; scheduler: SchedulerService; diff --git a/packages/backend-legacy/CHANGELOG.md b/packages/backend-legacy/CHANGELOG.md index f731c09905..6097a0cfc4 100644 --- a/packages/backend-legacy/CHANGELOG.md +++ b/packages/backend-legacy/CHANGELOG.md @@ -1,5 +1,94 @@ # example-backend-legacy +## 0.2.106-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/plugin-app-backend@0.4.4-next.1 + - @backstage/plugin-auth-backend@0.24.2-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-catalog-node@1.15.1-next.1 + - @backstage/plugin-events-backend@0.4.1-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + - @backstage/plugin-kubernetes-backend@0.19.2-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-proxy-backend@0.5.10-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.2 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.1 + - @backstage/plugin-search-backend@1.8.1-next.1 + - @backstage/plugin-signals-backend@0.3.0-next.2 + - @backstage/plugin-signals-node@0.1.16-next.1 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.1 + - @backstage/plugin-permission-backend@0.5.53-next.1 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.2 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.1 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.1 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.1 + - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.1 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.1 + - @backstage/plugin-search-backend-module-pg@0.5.40-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.1 + - @backstage/catalog-client@1.9.1-next.0 + - @backstage/integration@1.16.1-next.0 + +## 0.2.106-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-signals-backend@0.3.0-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.1 + +## 0.2.106-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.40-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + ## 0.2.105 ### Patch Changes diff --git a/packages/backend-legacy/package.json b/packages/backend-legacy/package.json index 2fa8e3e9bf..849bf0bf83 100644 --- a/packages/backend-legacy/package.json +++ b/packages/backend-legacy/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-legacy", - "version": "0.2.105", + "version": "0.2.106-next.2", "backstage": { "role": "backend" }, diff --git a/packages/backend-legacy/src/index.ts b/packages/backend-legacy/src/index.ts index 8ef969ff2b..c883603efb 100644 --- a/packages/backend-legacy/src/index.ts +++ b/packages/backend-legacy/src/index.ts @@ -47,7 +47,6 @@ import search from './plugins/search'; import techdocs from './plugins/techdocs'; import app from './plugins/app'; import permission from './plugins/permission'; -import signals from './plugins/signals'; import { PluginEnvironment } from './types'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; @@ -137,7 +136,6 @@ async function main() { const appEnv = useHotMemoize(module, () => createEnv('app')); const permissionEnv = useHotMemoize(module, () => createEnv('permission')); const eventsEnv = useHotMemoize(module, () => createEnv('events')); - const signalsEnv = useHotMemoize(module, () => createEnv('signals')); const apiRouter = Router(); apiRouter.use('/catalog', await catalog(catalogEnv)); @@ -149,7 +147,6 @@ async function main() { apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv)); apiRouter.use('/proxy', await proxy(proxyEnv)); apiRouter.use('/permission', await permission(permissionEnv)); - apiRouter.use('/signals', await signals(signalsEnv)); apiRouter.use(notFoundHandler()); const service = createServiceBuilder(module) diff --git a/packages/backend-legacy/src/plugins/search.ts b/packages/backend-legacy/src/plugins/search.ts index dcdcfa9b79..1991b282e1 100644 --- a/packages/backend-legacy/src/plugins/search.ts +++ b/packages/backend-legacy/src/plugins/search.ts @@ -15,7 +15,6 @@ */ import { useHotCleanup } from '@backstage/backend-common'; -import { DefaultCatalogCollatorFactory } from '@backstage/plugin-search-backend-module-catalog'; import { ToolDocumentCollatorFactory } from '@backstage/plugin-search-backend-module-explore'; import { createRouter } from '@backstage/plugin-search-backend'; import { ElasticSearchSearchEngine } from '@backstage/plugin-search-backend-module-elasticsearch'; @@ -67,16 +66,6 @@ export default async function createPlugin( initialDelay: { seconds: 3 }, }); - // Collators are responsible for gathering documents known to plugins. This - // particular collator gathers entities from the software catalog. - indexBuilder.addCollator({ - schedule, - factory: DefaultCatalogCollatorFactory.fromConfig(env.config, { - discovery: env.discovery, - tokenManager: env.tokenManager, - }), - }); - indexBuilder.addCollator({ schedule, factory: DefaultTechDocsCollatorFactory.fromConfig(env.config, { diff --git a/packages/backend-legacy/src/plugins/signals.ts b/packages/backend-legacy/src/plugins/signals.ts deleted file mode 100644 index 33b1af5edf..0000000000 --- a/packages/backend-legacy/src/plugins/signals.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2023 The Backstage 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. - */ -import { Router } from 'express'; -import { createRouter } from '@backstage/plugin-signals-backend'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - events: env.events, - identity: env.identity, - discovery: env.discovery, - config: env.config, - }); -} diff --git a/packages/backend-legacy/src/types.ts b/packages/backend-legacy/src/types.ts index 3f5d163925..b106f5d85a 100644 --- a/packages/backend-legacy/src/types.ts +++ b/packages/backend-legacy/src/types.ts @@ -16,12 +16,7 @@ import { Logger } from 'winston'; import { Config } from '@backstage/config'; -import { - PluginCacheManager, - PluginDatabaseManager, - PluginEndpointDiscovery, - TokenManager, -} from '@backstage/backend-common'; +import { PluginCacheManager, TokenManager } from '@backstage/backend-common'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { EventBroker, EventsService } from '@backstage/plugin-events-node'; @@ -29,15 +24,17 @@ import { SignalsService } from '@backstage/plugin-signals-node'; import { UrlReaderService, SchedulerService, + DatabaseService, + DiscoveryService, } from '@backstage/backend-plugin-api'; export type PluginEnvironment = { logger: Logger; cache: PluginCacheManager; - database: PluginDatabaseManager; + database: DatabaseService; config: Config; reader: UrlReaderService; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; permissions: PermissionEvaluator; scheduler: SchedulerService; diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md index 77f6729fc6..cdcd1f76ed 100644 --- a/packages/backend-openapi-utils/CHANGELOG.md +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/backend-openapi-utils +## 0.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/errors@1.2.7-next.0 + +## 0.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 0.4.0 ### Minor Changes diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index c7c0be76b7..0513354ebe 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-openapi-utils", - "version": "0.4.0", + "version": "0.4.1-next.1", "description": "OpenAPI typescript support.", "backstage": { "role": "node-library" diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index cf21a1ef92..da2139d959 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,29 @@ # @backstage/backend-plugin-api +## 1.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/cli-common@0.1.15 + +## 1.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-permission-common@0.8.3 + ## 1.1.0 ### Minor Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index ddffa570a4..7e4fa19c84 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-plugin-api", - "version": "1.1.0", + "version": "1.1.1-next.1", "description": "Core API used by Backstage backend plugins", "backstage": { "role": "node-library" diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index addc59d3b7..a5bb8cf63b 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/backend-test-utils +## 1.2.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.2.1-next.0 + - @backstage/backend-app-api@1.1.1-next.1 + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/config@1.3.2-next.0 + - @backstage/errors@1.2.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-events-node@0.4.7-next.1 + +## 1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 1.2.0 ### Minor Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 4daad2cb3c..e29109c7a4 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-test-utils", - "version": "1.2.0", + "version": "1.2.1-next.1", "description": "Test helpers library for Backstage backends", "backstage": { "role": "node-library" diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.ts index 42b46f4de7..4471f6ed24 100644 --- a/packages/backend-test-utils/src/next/wiring/TestBackend.ts +++ b/packages/backend-test-utils/src/next/wiring/TestBackend.ts @@ -27,11 +27,11 @@ import { mockServices } from '../services'; import { ConfigReader } from '@backstage/config'; import express from 'express'; // Direct internal import to avoid duplication -// eslint-disable-next-line @backstage/no-forbidden-package-imports +// eslint-disable-next-line @backstage/no-relative-monorepo-imports import { InternalBackendFeature, InternalBackendRegistrations, -} from '@backstage/backend-plugin-api/src/wiring/types'; +} from '../../../../backend-plugin-api/src/wiring/types'; import { DefaultRootHttpRouter, ExtendedHttpServer, diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 3e65959335..1275ca743c 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,92 @@ # example-backend +## 0.0.34-next.2 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.1 + - @backstage/backend-plugin-api@1.1.1-next.1 + - @backstage/catalog-model@1.7.3-next.0 + - @backstage/plugin-app-backend@0.4.4-next.1 + - @backstage/plugin-auth-backend@0.24.2-next.1 + - @backstage/plugin-auth-node@0.5.6-next.1 + - @backstage/plugin-catalog-backend@1.30.0-next.1 + - @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.1 + - @backstage/plugin-devtools-backend@0.5.1-next.1 + - @backstage/plugin-events-backend@0.4.1-next.1 + - @backstage/plugin-kubernetes-backend@0.19.2-next.1 + - @backstage/plugin-permission-common@0.8.4-next.0 + - @backstage/plugin-proxy-backend@0.5.10-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.2 + - @backstage/plugin-search-backend@1.8.1-next.1 + - @backstage/plugin-signals-backend@0.3.0-next.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.1 + - @backstage/plugin-notifications-backend@0.5.1-next.1 + - @backstage/plugin-permission-backend@0.5.53-next.1 + - @backstage/plugin-permission-node@0.8.7-next.1 + - @backstage/plugin-search-backend-node@1.3.7-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.2 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.1 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.1 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.1 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.1 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.1 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.2 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.1 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.1 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.1 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.1 + +## 0.0.34-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.1 + - @backstage/plugin-signals-backend@0.3.0-next.1 + - @backstage/plugin-techdocs-backend@1.11.5-next.1 + - @backstage/plugin-scaffolder-backend@1.29.0-next.1 + - @backstage/plugin-notifications-backend@0.5.1-next.0 + +## 0.0.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.0 + - @backstage/plugin-devtools-backend@0.5.1-next.0 + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-notifications-backend@0.5.1-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + ## 0.0.33 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index e4aef833ca..6409dfae7a 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.0.33", + "version": "0.0.34-next.2", "backstage": { "role": "backend" }, diff --git a/packages/canon/.storybook/themes/backstage.css b/packages/canon/.storybook/themes/backstage.css index 5777f303b6..780876501b 100644 --- a/packages/canon/.storybook/themes/backstage.css +++ b/packages/canon/.storybook/themes/backstage.css @@ -1,15 +1,5 @@ -[data-theme='backstage-light'] { - /* Colors */ - --canon-accent: #2e77d0; - --canon-background: #f8f8f8; - --canon-surface-1: #fff; - --canon-surface-2: #f4f4f4; - - /* Text colors */ - --canon-text-primary: #000; - --canon-text-primary-on-accent: #fff; - --canon-text-secondary: #646464; - +[data-theme-name='legacy'][data-theme='light'], +[data-theme-name='legacy'][data-theme='dark'] { --canon-font-regular: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; .cn-button { @@ -62,13 +52,35 @@ } } -[data-theme='backstage-dark'] { +[data-theme-name='legacy'][data-theme='light'] { /* Colors */ --canon-accent: #2e77d0; + --canon-background: #f8f8f8; + --canon-surface-1: #fff; + --canon-surface-2: #f4f4f4; + + /* Text colors */ + --canon-text-primary: #000; + --canon-text-primary-on-accent: #fff; + --canon-text-secondary: #646464; +} + +[data-theme-name='legacy'][data-theme='dark'] { + /* Colors */ + --canon-accent: #fff; --canon-background: #000; --canon-surface-1: #121212; --canon-surface-2: #1a1a1a; + /* Borders */ + --canon-border-base: rgba(255, 255, 255, 0.2); + --canon-border-warning: #f50000; + --canon-border-error: #f87503; + --canon-border-selected: #25d262; + + /* States - Add more states */ + --canon-error: #f50000; + /* Text colors */ --canon-text-primary: #fff; --canon-text-primary-on-accent: #000; diff --git a/packages/canon/docs/components/IconLibrary/IconLibrary.tsx b/packages/canon/docs/components/IconLibrary/IconLibrary.tsx index e32f4c08a4..1d517f7a98 100644 --- a/packages/canon/docs/components/IconLibrary/IconLibrary.tsx +++ b/packages/canon/docs/components/IconLibrary/IconLibrary.tsx @@ -16,15 +16,15 @@ import React from 'react'; import { Icon } from '@backstage/canon'; import type { IconNames } from '@backstage/canon'; -import { defaultIcons } from '../../../src/components/Icon/icons'; +import { icons } from '../../../src/components/Icon/icons'; import { Text } from '../Text/Text'; export const IconLibrary = () => { - const icons = Object.keys(defaultIcons); + const iconsList = Object.keys(icons); return (
- {icons.map(icon => ( + {iconsList.map(icon => (
diff --git a/packages/canon/report.api.md b/packages/canon/report.api.md index e725d0ac8b..fc1f773b4b 100644 --- a/packages/canon/report.api.md +++ b/packages/canon/report.api.md @@ -5,9 +5,11 @@ ```ts /// +import type { CSSProperties } from 'react'; import { ForwardRefExoticComponent } from 'react'; import { default as React_2 } from 'react'; import * as React_3 from 'react'; +import { ReactNode } from 'react'; import { RefAttributes } from 'react'; // @public (undocumented) @@ -84,6 +86,8 @@ export interface ButtonProps { // (undocumented) size?: 'small' | 'medium' | Partial>; // (undocumented) + style?: React.CSSProperties; + // (undocumented) variant?: | 'primary' | 'secondary' @@ -91,6 +95,29 @@ export interface ButtonProps { | Partial>; } +// @public (undocumented) +export interface CanonContextProps { + // (undocumented) + breakpoint: Breakpoint; + // (undocumented) + getResponsiveValue: ( + value: string | Partial>, + ) => string; + // (undocumented) + icons: IconMap; +} + +// @public (undocumented) +export const CanonProvider: (props: CanonProviderProps) => React_2.JSX.Element; + +// @public (undocumented) +export interface CanonProviderProps { + // (undocumented) + children?: ReactNode; + // (undocumented) + overrides?: Partial>; +} + // @public (undocumented) export const Checkbox: React_2.ForwardRefExoticComponent< CheckboxProps & React_2.RefAttributes @@ -200,6 +227,33 @@ export interface GridProps extends SpaceProps { style?: React.CSSProperties; } +// @public (undocumented) +export const Heading: React_2.ForwardRefExoticComponent< + HeadingProps & React_2.RefAttributes +>; + +// @public (undocumented) +export interface HeadingProps { + // (undocumented) + as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; + // (undocumented) + children: React.ReactNode; + // (undocumented) + variant?: + | 'display' + | 'title1' + | 'title2' + | 'title3' + | 'title4' + | 'title5' + | Partial< + Record< + Breakpoint, + 'display' | 'title1' | 'title2' | 'title3' | 'title4' | 'title5' + > + >; +} + // @public (undocumented) export const Icon: (props: IconProps) => React_2.JSX.Element; @@ -222,8 +276,11 @@ export type IconNames = | 'chevronRight' | 'chevronUp' | 'cloud' + | 'externalLink' | 'heart' + | 'moon' | 'plus' + | 'sun' | 'trash'; // @public (undocumented) @@ -232,6 +289,9 @@ export type IconProps = { size?: number; }; +// @public (undocumented) +export const icons: IconMap; + // @public (undocumented) export const Inline: ForwardRefExoticComponent< InlineProps & RefAttributes @@ -374,6 +434,32 @@ export const TableRow: React_3.ForwardRefExoticComponent< React_3.RefAttributes >; +// @public (undocumented) +const Text_2: React_2.ForwardRefExoticComponent< + TextProps & React_2.RefAttributes +>; +export { Text_2 as Text }; + +// @public (undocumented) +export interface TextProps { + // (undocumented) + children: ReactNode; + // (undocumented) + style?: CSSProperties; + // (undocumented) + variant?: + | 'subtitle' + | 'body' + | 'caption' + | 'label' + | Partial>; + // (undocumented) + weight?: 'regular' | 'bold' | Partial>; +} + +// @public (undocumented) +export const useCanon: () => CanonContextProps; + // @public (undocumented) export interface UtilityProps extends SpaceProps { // (undocumented) diff --git a/packages/canon/src/components/Box/Box.stories.tsx b/packages/canon/src/components/Box/Box.stories.tsx index bd4e597fa0..d11f9fbab7 100644 --- a/packages/canon/src/components/Box/Box.stories.tsx +++ b/packages/canon/src/components/Box/Box.stories.tsx @@ -40,22 +40,28 @@ const meta = { export default meta; type Story = StoryObj; -export const Basic: Story = { +export const Default: Story = { args: { style: { - background: '#1f47ff', - color: 'white', - padding: '4px 8px', + width: '64px', + height: '64px', + background: '#eaf2fd', borderRadius: '4px', + border: '1px solid #2563eb', + color: '#2563eb', + backgroundImage: + 'url("data:image/svg+xml,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22%232563eb%22%20fill-opacity%3D%220.3%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5%200h1L0%206V5zM6%205v1H5z%22/%3E%3C/g%3E%3C/svg%3E")', }, - children: 'Basic Box', }, }; export const Display: Story = { args: { style: { - ...Basic.args?.style, + ...Default.args?.style, + width: 'auto', + height: 'auto', + padding: '8px', }, }, render: args => ( @@ -84,7 +90,10 @@ export const Display: Story = { export const FlexDirection: Story = { args: { style: { - ...Basic.args?.style, + ...Default.args?.style, + width: 'auto', + height: 'auto', + padding: '8px', }, display: 'flex', gap: 'xs', @@ -110,8 +119,10 @@ export const FlexDirection: Story = { export const JustifyContent: Story = { args: { style: { - ...Basic.args?.style, + ...Default.args?.style, width: '200px', + height: 'auto', + padding: '8px', }, display: 'flex', gap: 'xs', @@ -153,9 +164,10 @@ export const JustifyContent: Story = { export const AlignItems: Story = { args: { style: { - ...Basic.args?.style, + ...Default.args?.style, width: '200px', height: '100px', + padding: '8px', }, display: 'flex', gap: 'xs', @@ -289,8 +301,10 @@ export const Margin: Story = { export const FlexWrap: Story = { args: { style: { - ...Basic.args?.style, + ...Default.args?.style, width: '200px', + height: 'auto', + padding: '8px', }, display: 'flex', gap: 'xs', @@ -328,11 +342,14 @@ export const FlexWrap: Story = { export const BorderRadius: Story = { args: { style: { - background: '#1f47ff', - color: 'white', - padding: '4px 8px', width: '64px', height: '64px', + background: '#eaf2fd', + border: '1px solid #2563eb', + color: '#2563eb', + backgroundImage: + 'url("data:image/svg+xml,%3Csvg%20width%3D%226%22%20height%3D%226%22%20viewBox%3D%220%200%206%206%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cg%20fill%3D%22%232563eb%22%20fill-opacity%3D%220.3%22%20fill-rule%3D%22evenodd%22%3E%3Cpath%20d%3D%22M5%200h1L0%206V5zM6%205v1H5z%22/%3E%3C/g%3E%3C/svg%3E")', + padding: '4px 8px', }, display: 'flex', alignItems: 'center', diff --git a/packages/canon/src/components/Button/Button.stories.tsx b/packages/canon/src/components/Button/Button.stories.tsx index c921efa6f2..728098970c 100644 --- a/packages/canon/src/components/Button/Button.stories.tsx +++ b/packages/canon/src/components/Button/Button.stories.tsx @@ -19,13 +19,12 @@ import type { Meta, StoryObj } from '@storybook/react'; import { Button } from './Button'; import { Inline } from '../Inline'; import { Stack } from '../Stack'; +import { Text } from '../Text'; +import { ButtonProps } from './types'; const meta = { title: 'Components/Button', component: Button, - parameters: { - layout: 'centered', - }, argTypes: { size: { control: 'select', @@ -40,12 +39,6 @@ const meta = { export default meta; type Story = StoryObj; -export const Primary: Story = { - args: { - children: 'Primary button', - }, -}; - export const Variants: Story = { args: { children: 'Button', @@ -59,9 +52,15 @@ export const Variants: Story = { }, render: () => ( - - - + + + ), }; @@ -125,3 +124,47 @@ export const Responsive: Story = { }, }, }; + +const variants: string[] = ['primary', 'secondary', 'tertiary']; + +export const Playground: Story = { + args: { + children: 'Button', + }, + render: () => ( + + {variants.map(variant => ( + + {variant} + {['small', 'medium'].map(size => ( + + + + + + ))} + + ))} + + ), +}; diff --git a/packages/canon/src/components/Button/Button.tsx b/packages/canon/src/components/Button/Button.tsx index e4166e5c79..a186aada39 100644 --- a/packages/canon/src/components/Button/Button.tsx +++ b/packages/canon/src/components/Button/Button.tsx @@ -14,6 +14,8 @@ * limitations under the License. */ +'use client'; + import React, { forwardRef } from 'react'; import { Icon } from '../Icon'; import { ButtonProps } from './types'; @@ -29,6 +31,8 @@ export const Button = forwardRef( iconStart, iconEnd, children, + style, + ...rest } = props; const { getResponsiveValue } = useCanon(); @@ -39,7 +43,7 @@ export const Button = forwardRef( return (