From 1cce2d59f62a064fed6edef87a1cbcf5fc88c761 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 00:47:23 +0000 Subject: [PATCH 01/19] chore(deps): update docker/setup-buildx-action action to v3.8.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/deploy_docker-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 7d635e1e86b26222bed10bd8b9f579d0315358ec Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Thu, 19 Dec 2024 13:16:10 -0600 Subject: [PATCH 02/19] Removed new Signed-off-by: Andre Wanlin --- docs/features/software-templates/writing-custom-actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 }, }); }, From 702259c6da47e139a5b87fb2ad118eb5ac7f093a Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Wed, 1 Jan 2025 23:00:45 +0300 Subject: [PATCH 03/19] Update Knative Event Mesh plugin icon Signed-off-by: Ali Ok --- microsite/data/plugins/knative-event-mesh.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/microsite/data/plugins/knative-event-mesh.yaml b/microsite/data/plugins/knative-event-mesh.yaml index 107114cc78..6ecb219b32 100644 --- a/microsite/data/plugins/knative-event-mesh.yaml +++ b/microsite/data/plugins/knative-event-mesh.yaml @@ -6,4 +6,5 @@ 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' From e3dbfe10a3afe78f3bb81e2c412f0e99aa76ad7e Mon Sep 17 00:00:00 2001 From: petar-cvit Date: Thu, 2 Jan 2025 20:44:11 +0100 Subject: [PATCH 04/19] add Cyclops modules plugin Signed-off-by: petar-cvit --- microsite/data/plugins/cyclops-modules.yaml | 14 ++++++ microsite/static/img/cyclops.svg | 51 +++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 microsite/data/plugins/cyclops-modules.yaml create mode 100644 microsite/static/img/cyclops.svg 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/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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + From 6bb3fdc8807c880c83f21ac1efb3fd90531eaa3b Mon Sep 17 00:00:00 2001 From: Dima Pasko <48351+dimapasko@users.noreply.github.com> Date: Thu, 2 Jan 2025 21:32:04 +0100 Subject: [PATCH 05/19] Add a new company to the ADOPTERS.md file Signed-off-by: Dima Pasko <48351+dimapasko@users.noreply.github.com> --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index 4ab88c398a..1eacd4c104 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -281,4 +281,5 @@ _You can do this by using the [Adopter form](https://info.backstage.spotify.com/ | [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 | From 22a40d9c0691d78f4def0cdedf67902a37dd629c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 12:55:06 +0000 Subject: [PATCH 06/19] chore(deps): update dependency @types/dockerode to v3.3.33 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ab8676ace9..b48c24a935 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19019,13 +19019,13 @@ __metadata: linkType: hard "@types/dockerode@npm:^3.3.0, @types/dockerode@npm:^3.3.29": - version: 3.3.32 - resolution: "@types/dockerode@npm:3.3.32" + version: 3.3.33 + resolution: "@types/dockerode@npm:3.3.33" dependencies: "@types/docker-modem": "*" "@types/node": "*" "@types/ssh2": "*" - checksum: 17bfa92511cdc6ab51a67cb4678931b43670feffd737ba593c3ff90a6f71673aa04f8a81524690dddc08b483628d657a338a176171ff131de9e0efba4c3ecc11 + checksum: 4e3ed41f3b89a213c9ba923862b653f54ee7232b2c95553410d0c3846396efb592d0291fa2f50d4b47d42a2ae0b49f422e72efcdd845d0ebb60da2e8990e9293 languageName: node linkType: hard From 91bb99ae2288e5046fa27e6cee9489aa6b1f2b77 Mon Sep 17 00:00:00 2001 From: Bogdan Nechyporenko Date: Sun, 5 Jan 2025 12:33:58 +0100 Subject: [PATCH 07/19] Fixed the issue #28239 (Bug Report: Field extension validation does not work when field is in dependencies in an array field) Signed-off-by: Bogdan Nechyporenko --- .changeset/little-scissors-fold.md | 5 ++ .../Stepper/createAsyncValidators.test.ts | 58 +++++++++++++++++++ .../Stepper/createAsyncValidators.ts | 22 ++++++- 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 .changeset/little-scissors-fold.md diff --git a/.changeset/little-scissors-fold.md b/.changeset/little-scissors-fold.md new file mode 100644 index 0000000000..a8a0c917b8 --- /dev/null +++ b/.changeset/little-scissors-fold.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Fixed the issue #28239 (Bug Report: Field extension validation does not work when field is in dependencies in an array field) diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts index f4dab376bc..02e15ec53b 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.test.ts @@ -435,4 +435,62 @@ describe('createAsyncValidators', () => { expect(validators.CustomLinkField).toHaveBeenCalled(); }); + + it('should validate field in the dependencies in an array field', async () => { + const schema: JsonObject = { + title: 'Make a choice', + properties: { + myArray: { + type: 'array', + title: 'Array', + items: { + type: 'object', + required: ['selector'], + properties: { + selector: { + title: 'Selector', + type: 'string', + enum: ['Choice 1', 'Choice 2'], + }, + }, + dependencies: { + selector: { + oneOf: [ + { properties: { selector: { enum: ['Choice 1'] } } }, + { + properties: { + selector: { enum: ['Choice 2'] }, + customValidatedField: { + title: 'Custom validated field', + type: 'string', + 'ui:field': 'ValidateKebabCase', + }, + }, + }, + ], + }, + }, + }, + }, + }, + }; + + const validators = { ValidateKebabCase: jest.fn() }; + + const validate = createAsyncValidators(schema, validators, { + apiHolder: { get: jest.fn() }, + }); + + await validate({ + myArray: [ + { + selector: 'Choice 2', + customValidatedField: 'apple', + }, + { selector: 'Choice 1' }, + ], + }); + + expect(validators.ValidateKebabCase).toHaveBeenCalled(); + }); }); diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts index d11d0b9b3b..b0ba844e54 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts @@ -15,7 +15,7 @@ */ import { FieldValidation } from '@rjsf/utils'; -import type { JsonObject, JsonValue } from '@backstage/types'; +import { JsonObject, JsonValue } from '@backstage/types'; import { ApiHolder } from '@backstage/core-plugin-api'; import { Draft07 as JSONSchema, @@ -135,6 +135,26 @@ export const createAsyncValidators = ( for (const [, propValue] of Object.entries(properties)) { await doValidate(propValue); } + if (Array.isArray(value)) { + for (const [_, v] of Object.entries(value)) { + const { schema: itemSchema, uiSchema: itemUiSchema } = + extractSchemaFromStep(definitionInSchema.items); + + if (isObject(v)) { + for (const [pK, pV] of Object.entries(v)) { + if ('ui:field' in itemUiSchema[pK]) { + await validateForm( + itemUiSchema[pK]['ui:field'], + pK, + pV, + itemSchema, + itemUiSchema, + ); + } + } + } + } + } } else if (isObject(value)) { formValidation[key] = await validate(formData, pointer, value); } From 45b6d163f93a330bf710ec64673e2d9833777ba4 Mon Sep 17 00:00:00 2001 From: Bogdan Nechyporenko Date: Sun, 5 Jan 2025 12:36:31 +0100 Subject: [PATCH 08/19] wip Signed-off-by: Bogdan Nechyporenko --- .../src/next/components/Stepper/createAsyncValidators.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts index b0ba844e54..b8ae3a6dfd 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts +++ b/plugins/scaffolder-react/src/next/components/Stepper/createAsyncValidators.ts @@ -15,7 +15,7 @@ */ import { FieldValidation } from '@rjsf/utils'; -import { JsonObject, JsonValue } from '@backstage/types'; +import type { JsonObject, JsonValue } from '@backstage/types'; import { ApiHolder } from '@backstage/core-plugin-api'; import { Draft07 as JSONSchema, From 3710b3507f6bcab4076458c4d9b819672abe4c89 Mon Sep 17 00:00:00 2001 From: Yasser Hennawi Date: Fri, 3 Jan 2025 17:08:40 +0100 Subject: [PATCH 09/19] fix: pass down withSearch from EntityTechdocsContent component Signed-off-by: Yasser Hennawi --- .changeset/gentle-deers-return.md | 5 +++++ plugins/techdocs/report.api.md | 18 ++++++++++++------ plugins/techdocs/src/Router.tsx | 16 +++++++++++----- 3 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 .changeset/gentle-deers-return.md 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/plugins/techdocs/report.api.md b/plugins/techdocs/report.api.md index c577de5eac..196fef5f35 100644 --- a/plugins/techdocs/report.api.md +++ b/plugins/techdocs/report.api.md @@ -133,9 +133,12 @@ export type DocsTableRow = { }; // @public -export const EmbeddedDocsRouter: ( - props: PropsWithChildren<{}>, -) => React_2.JSX.Element; +export const EmbeddedDocsRouter: ({ + children, + withSearch, +}: React_2.PropsWithChildren<{ + withSearch?: boolean | undefined; +}>) => React_2.JSX.Element; // @public export const EntityListDocsGrid: ( @@ -191,9 +194,12 @@ export type EntityListDocsTableProps = { }; // @public -export const EntityTechdocsContent: (props: { - children?: ReactNode; -}) => JSX_2.Element; +export const EntityTechdocsContent: ({ + children, + withSearch, +}: PropsWithChildren<{ + withSearch?: boolean | undefined; +}>) => JSX_2.Element; // @public export const isTechDocsAvailable: (entity: Entity) => boolean; diff --git a/plugins/techdocs/src/Router.tsx b/plugins/techdocs/src/Router.tsx index 352c9f5b73..6a0bc0e08e 100644 --- a/plugins/techdocs/src/Router.tsx +++ b/plugins/techdocs/src/Router.tsx @@ -57,16 +57,19 @@ export const Router = () => { }; export const EmbeddedDocsRouter = ( - props: PropsWithChildren<{ emptyState?: React.ReactElement }>, + props: PropsWithChildren<{ + emptyState?: React.ReactElement; + withSearch?: boolean; + }>, ) => { - const { children, emptyState } = props; + const { children, emptyState, withSearch = true } = props; const { entity } = useEntity(); // Using objects instead of elements, otherwise "outlet" will be null on sub-pages and add-ons won't render const element = useRoutes([ { path: '/*', - element: , + element: , children: [ { path: '*', @@ -96,8 +99,11 @@ export const EmbeddedDocsRouter = ( * * @public */ -export const LegacyEmbeddedDocsRouter = (props: PropsWithChildren<{}>) => { +export const LegacyEmbeddedDocsRouter = ({ + children, + withSearch = true, +}: PropsWithChildren<{ withSearch?: boolean }>) => { // Wrap the Router to avoid exposing the emptyState prop in the non-alpha // public API and make it easier for us to change later. - return ; + return ; }; From 62a7f613ac6b2b5f78de38ece09520bd9c149179 Mon Sep 17 00:00:00 2001 From: Robert Kelly Date: Sun, 5 Jan 2025 17:06:35 -0600 Subject: [PATCH 10/19] Adding Liatrio as a commercial partner to the Community page Signed-off-by: Robert Kelly --- microsite/src/pages/community/index.tsx | 5 +++++ microsite/static/img/partner-logo-liatrio.png | Bin 0 -> 32140 bytes 2 files changed, 5 insertions(+) create mode 100644 microsite/static/img/partner-logo-liatrio.png diff --git a/microsite/src/pages/community/index.tsx b/microsite/src/pages/community/index.tsx index c9367f4662..171a5efcdf 100644 --- a/microsite/src/pages/community/index.tsx +++ b/microsite/src/pages/community/index.tsx @@ -106,6 +106,11 @@ const Community = () => { 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/partner-logo-liatrio.png b/microsite/static/img/partner-logo-liatrio.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6238cf8c97173125dcb513eb1f7914b73e874a GIT binary patch literal 32140 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 Date: Mon, 6 Jan 2025 11:09:22 +0530 Subject: [PATCH 11/19] Updated docs of writing-conf Signed-off-by: AmbrishRamachandiran --- docs/conf/writing.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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. From 73ec34aaa77848baffea15b7ffab0ee36c4c67c2 Mon Sep 17 00:00:00 2001 From: Peter Macdonald Date: Mon, 6 Jan 2025 16:18:22 +0100 Subject: [PATCH 12/19] pinch and zoom Signed-off-by: Peter Macdonald --- plugins/catalog/src/alpha/translation.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog/src/alpha/translation.ts b/plugins/catalog/src/alpha/translation.ts index e5e6fa18e2..2dc2f2d34e 100644 --- a/plugins/catalog/src/alpha/translation.ts +++ b/plugins/catalog/src/alpha/translation.ts @@ -156,7 +156,7 @@ export const catalogTranslationRef = createTranslationRef({ }, systemDiagramCard: { title: 'System Diagram', - description: 'Use pinch & zoo to move around the diagram.', + description: 'Use pinch & zoom to move around the diagram.', edgeLabels: { partOf: 'part of', provides: 'provides', From d1fd317e32af0fc9715b8483010280ab3f1cc399 Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Tue, 7 Jan 2025 01:12:08 +0000 Subject: [PATCH 13/19] yarn-plugin: document local development of yarn plugin Signed-off-by: MT Lewis --- packages/yarn-plugin/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/yarn-plugin/README.md b/packages/yarn-plugin/README.md index 67ea19b1bd..c1d5647b8e 100644 --- a/packages/yarn-plugin/README.md +++ b/packages/yarn-plugin/README.md @@ -24,3 +24,17 @@ The resulting changes in the file system should be committed to your repo. The yarn plugin recognizes the version string `"backstage:^"`, and replaces it with the appropriate version based on the overall Backstage version in backstage.json. + +## Local Development + +- Run unit tests: `yarn test` +- Build the plugin locally: `yarn build` +- Rebuild whenever plugin files change: `yarn start` +- Install local build (in a package directory outside the Backstage monorepo): + `yarn plugin import +/path/to/backstage-repo/packages/yarn-plugin/bundles/@yarnpkg/plugin-backstage.js` + +The plugin can be manually tested in any repository running at least yarn 4.1.1. +Sadly it can't be manually tested directly in the Backstage monorepo - since +packages in this repository use `workspace:^` dependencies, there's no use case +for the yarn plugin. From d3a99e14da2fd4d9e02cdb03f1a8c974fba2db03 Mon Sep 17 00:00:00 2001 From: mario ma Date: Tue, 7 Jan 2025 14:37:43 +0800 Subject: [PATCH 14/19] fix: change partner alauda logo Signed-off-by: mario ma --- microsite/static/img/partner-logo-alauda.png | Bin 5972 -> 6011 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/microsite/static/img/partner-logo-alauda.png b/microsite/static/img/partner-logo-alauda.png index 09392a2582129dd3f0668c3fa2ba70bfb00ab972..b43719deb98386e2b39a9a78d88b3ed2b5aa8197 100644 GIT binary patch delta 5995 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 Z{{oqKgUBh4D<=Q|002ovPDHLkV1i|^IUWE2 delta 5956 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 myd=2s`1AZv8lcdFX83 Date: Tue, 7 Jan 2025 13:45:28 +0100 Subject: [PATCH 15/19] chore: updating api-reports Signed-off-by: blam --- plugins/catalog/report-alpha.api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog/report-alpha.api.md b/plugins/catalog/report-alpha.api.md index 3a9f0c6c33..bdd9240d53 100644 --- a/plugins/catalog/report-alpha.api.md +++ b/plugins/catalog/report-alpha.api.md @@ -115,7 +115,7 @@ export const catalogTranslationRef: TranslationRef< readonly 'hasSystemsCard.emptyMessage': 'No system is part of this domain'; readonly 'relatedEntitiesCard.emptyHelpLinkTitle': 'Learn how to change this'; readonly 'systemDiagramCard.title': 'System Diagram'; - readonly 'systemDiagramCard.description': 'Use pinch & zoo to move around the diagram.'; + readonly 'systemDiagramCard.description': 'Use pinch & zoom to move around the diagram.'; readonly 'systemDiagramCard.edgeLabels.dependsOn': 'depends on'; readonly 'systemDiagramCard.edgeLabels.partOf': 'part of'; readonly 'systemDiagramCard.edgeLabels.provides': 'provides'; From 208e53bf994c224f9546028fd8ff3fe28709c7b8 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 7 Jan 2025 13:46:05 +0100 Subject: [PATCH 16/19] chore: added changeset Signed-off-by: blam --- .changeset/red-hotels-sneeze.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/red-hotels-sneeze.md 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 From 3cfbe27b0e330a03f62a366170edd4b61afc8a9a Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Tue, 7 Jan 2025 14:41:45 +0100 Subject: [PATCH 17/19] Fix field extension validation issue Signed-off-by: blam --- .changeset/little-scissors-fold.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/little-scissors-fold.md b/.changeset/little-scissors-fold.md index a8a0c917b8..1b70e3977d 100644 --- a/.changeset/little-scissors-fold.md +++ b/.changeset/little-scissors-fold.md @@ -2,4 +2,4 @@ '@backstage/plugin-scaffolder-react': patch --- -Fixed the issue #28239 (Bug Report: Field extension validation does not work when field is in dependencies in an array field) +Fix field extension validation not working when field is in dependencies in an array field From 78c912d72ec89c98a3cd77bc67160316c1ff87c9 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 7 Jan 2025 15:10:12 +0000 Subject: [PATCH 18/19] Fix global styling issues Signed-off-by: Charles de Dreuille --- .../canon/.storybook/themes/backstage.css | 38 ++-- packages/canon/src/css/base.css | 4 +- packages/canon/src/css/core.css | 101 ++++++--- packages/canon/src/css/normalize.css | 212 +++++++++--------- packages/canon/src/css/utilities/2xl.css | 60 +++++ packages/canon/src/css/utilities/lg.css | 60 +++++ packages/canon/src/css/utilities/md.css | 60 +++++ packages/canon/src/css/utilities/sm.css | 60 +++++ packages/canon/src/css/utilities/xl.css | 60 +++++ packages/canon/src/css/utilities/xs.css | 60 +++++ 10 files changed, 568 insertions(+), 147 deletions(-) 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/src/css/base.css b/packages/canon/src/css/base.css index f2bf6b3363..b8bd0c4f81 100644 --- a/packages/canon/src/css/base.css +++ b/packages/canon/src/css/base.css @@ -14,9 +14,9 @@ * limitations under the License. */ -@layer base { - @import './normalize.css'; +@import './normalize.css'; +@layer base { *, html, body { diff --git a/packages/canon/src/css/core.css b/packages/canon/src/css/core.css index 9f8dcfff19..4f15d571c7 100644 --- a/packages/canon/src/css/core.css +++ b/packages/canon/src/css/core.css @@ -19,38 +19,14 @@ @import './utilities.css'; /* Light theme tokens */ -:root { - /* Colors */ - --canon-accent: #000; - --canon-background: #f8f8f8; - --canon-surface-1: #fff; - --canon-surface-2: #f4f4f4; - --canon-surface-3: #f1f1f1; - - /* Borders */ - --canon-border-base: rgba(0, 0, 0, 0.1); - --canon-border-warning: #e36d05; - --canon-border-error: #e22b2b; - --canon-border-selected: #1db954; - - /* States - Add more states */ - --canon-error: #f50000; - - /* Text colors */ - --canon-text-primary: #000; - --canon-text-primary-on-accent: #fff; - --canon-text-secondary: #646464; - - /* Box shadows */ - /* --canon-box-shadow-small: 0 0 0 1px rgba(0, 0, 0, 0.05); */ - /* --canon-box-shadow-medium: 0 0 0 1px rgba(0, 0, 0, 0.1); */ - /* --canon-box-shadow-large: 0 0 0 1px rgba(0, 0, 0, 0.2); */ +[data-theme='light'] { /* Font families */ --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: 'Monospace', monospace; + --canon-font-monospace: ui-monospace, 'Menlo', 'Monaco', 'Consolas', + 'Liberation Mono', 'Courier New', monospace; /* Font weights */ --canon-font-weight-regular: 400; @@ -93,10 +69,81 @@ /* Container */ --canon-container-max-width: 1200px; --canon-container-padding: 1rem; + + /* Colors */ + --canon-accent: #000; + --canon-background: #f8f8f8; + --canon-surface-1: #fff; + --canon-surface-2: #f4f4f4; + --canon-surface-3: #f1f1f1; + + /* Borders */ + --canon-border-base: rgba(0, 0, 0, 0.1); + --canon-border-hover: rgba(0, 0, 0, 0.2); + --canon-border-warning: #e36d05; + --canon-border-error: #e22b2b; + --canon-border-selected: #1db954; + + /* States - Add more states */ + --canon-error: #f50000; + + /* Text colors */ + --canon-text-primary: #000; + --canon-text-primary-on-accent: #fff; + --canon-text-secondary: #646464; } /* Dark theme tokens */ [data-theme='dark'] { + /* Font families */ + --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; + + /* Font weights */ + --canon-font-weight-regular: 400; + --canon-font-weight-bold: 600; + + /* Font sizes */ + --canon-font-size-label: 0.625rem; /* 10px */ + --canon-font-size-caption: 0.75rem; /* 12px */ + --canon-font-size-body: 0.875rem; /* 14px */ + --canon-font-size-subtitle: 1rem; /* 16px */ + --canon-font-size-title5: 1.25rem; /* 20px */ + --canon-font-size-title4: 1.5rem; /* 24px */ + --canon-font-size-title3: 2rem; /* 32px */ + --canon-font-size-title2: 3rem; /* 48px */ + --canon-font-size-title1: 4rem; /* 64px */ + --canon-font-size-display: 5.75rem; /* 92px */ + + /* Spacing */ + --canon-spacing-5xs: 0.125rem; /* 2px */ + --canon-spacing-4xs: 0.25rem; /* 4px */ + --canon-spacing-3xs: 0.375rem; /* 6px */ + --canon-spacing-2xs: 0.5rem; /* 8px */ + --canon-spacing-xs: 0.75rem; /* 12px */ + --canon-spacing-sm: 1rem; /* 16px */ + --canon-spacing-md: 1.5rem; /* 24px */ + --canon-spacing-lg: 2rem; /* 32px */ + --canon-spacing-xl: 2.5rem; /* 40px */ + --canon-spacing-2xl: 3rem; /* 48px */ + --canon-spacing-3xl: 3.5rem; /* 56px */ + + /* Border radius */ + --canon-border-radius-2xs: 0.125rem; /* 2px */ + --canon-border-radius-xs: 0.25rem; /* 4px */ + --canon-border-radius-sm: 0.5rem; /* 8px */ + --canon-border-radius-md: 0.75rem; /* 12px */ + --canon-border-radius-lg: 1rem; /* 16px */ + --canon-border-radius-xl: 1.25rem; /* 20px */ + --canon-border-radius-2xl: 1.5rem; /* 24px */ + + /* Container */ + --canon-container-max-width: 1200px; + --canon-container-padding: 1rem; + /* Colors */ --canon-accent: #fff; --canon-background: #000; diff --git a/packages/canon/src/css/normalize.css b/packages/canon/src/css/normalize.css index 80e1ca4119..ca637e9d3f 100644 --- a/packages/canon/src/css/normalize.css +++ b/packages/canon/src/css/normalize.css @@ -9,193 +9,195 @@ Document Use a better box model (opinionated). */ -*, -::before, -::after { - box-sizing: border-box; -} +@layer base { + *, + ::before, + ::after { + box-sizing: border-box; + } -html { - /* Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) */ - font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, - 'Apple Color Emoji', 'Segoe UI Emoji'; - line-height: 1.15; /* 1. Correct the line height in all browsers. */ - -webkit-text-size-adjust: 100%; /* 2. Prevent adjustments of font size after orientation changes in iOS. */ - tab-size: 4; /* 3. Use a more readable tab size (opinionated). */ -} + html { + /* Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) */ + font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, + 'Apple Color Emoji', 'Segoe UI Emoji'; + line-height: 1.15; /* 1. Correct the line height in all browsers. */ + -webkit-text-size-adjust: 100%; /* 2. Prevent adjustments of font size after orientation changes in iOS. */ + tab-size: 4; /* 3. Use a more readable tab size (opinionated). */ + } -/* + /* Sections ======== */ -body { - margin: 0; /* Remove the margin in all browsers. */ -} + body { + margin: 0; /* Remove the margin in all browsers. */ + } -/* + /* Text-level semantics ==================== */ -/** + /** Add the correct font weight in Chrome and Safari. */ -b, -strong { - font-weight: bolder; -} + b, + strong { + font-weight: bolder; + } -/** + /** 1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) 2. Correct the odd 'em' font sizing in all browsers. */ -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', Menlo, - monospace; /* 1 */ - font-size: 1em; /* 2 */ -} + code, + kbd, + samp, + pre { + font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', + Menlo, monospace; /* 1 */ + font-size: 1em; /* 2 */ + } -/** + /** Add the correct font size in all browsers. */ -small { - font-size: 80%; -} + small { + font-size: 80%; + } -/** + /** Prevent 'sub' and 'sup' elements from affecting the line height in all browsers. */ -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } -sub { - bottom: -0.25em; -} + sub { + bottom: -0.25em; + } -sup { - top: -0.5em; -} + sup { + top: -0.5em; + } -/* + /* Tabular data ============ */ -/** + /** Correct table border color inheritance in Chrome and Safari. (https://issues.chromium.org/issues/40615503, https://bugs.webkit.org/show_bug.cgi?id=195016) */ -table { - border-color: currentcolor; -} + table { + border-color: currentcolor; + } -/* + /* Forms ===== */ -/** + /** 1. Change the font styles in all browsers. 2. Remove the margin in Firefox and Safari. */ -button, -input, -optgroup, -select, -textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 1 */ - line-height: 1.15; /* 1 */ - margin: 0; /* 2 */ -} + button, + input, + optgroup, + select, + textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ + } -/** + /** Correct the inability to style clickable types in iOS and Safari. */ -button, -[type='button'], -[type='reset'], -[type='submit'] { - -webkit-appearance: button; -} + button, + [type='button'], + [type='reset'], + [type='submit'] { + -webkit-appearance: button; + } -/** + /** Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers. */ -legend { - padding: 0; -} + legend { + padding: 0; + } -/** + /** Add the correct vertical alignment in Chrome and Firefox. */ -progress { - vertical-align: baseline; -} + progress { + vertical-align: baseline; + } -/** + /** Correct the cursor style of increment and decrement buttons in Safari. */ -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} + ::-webkit-inner-spin-button, + ::-webkit-outer-spin-button { + height: auto; + } -/** + /** 1. Correct the odd appearance in Chrome and Safari. 2. Correct the outline style in Safari. */ -[type='search'] { - -webkit-appearance: textfield; /* 1 */ - outline-offset: -2px; /* 2 */ -} + [type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ + } -/** + /** Remove the inner padding in Chrome and Safari on macOS. */ -::-webkit-search-decoration { - -webkit-appearance: none; -} + ::-webkit-search-decoration { + -webkit-appearance: none; + } -/** + /** 1. Correct the inability to style clickable types in iOS and Safari. 2. Change font properties to 'inherit' in Safari. */ -::-webkit-file-upload-button { - -webkit-appearance: button; /* 1 */ - font: inherit; /* 2 */ -} + ::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ + } -/* + /* Interactive =========== */ -/* + /* Add the correct display in Chrome and Safari. */ -summary { - display: list-item; + summary { + display: list-item; + } } diff --git a/packages/canon/src/css/utilities/2xl.css b/packages/canon/src/css/utilities/2xl.css index 8938d0dbc5..4ea3d82db0 100644 --- a/packages/canon/src/css/utilities/2xl.css +++ b/packages/canon/src/css/utilities/2xl.css @@ -377,6 +377,10 @@ margin: var(--canon-spacing-2xl); } + .cu-2xl-m-2xs { + margin: var(--canon-spacing-2xs); + } + .cu-2xl-m-lg { margin: var(--canon-spacing-lg); } @@ -405,6 +409,10 @@ 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); } @@ -433,6 +441,10 @@ 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); } @@ -461,6 +473,10 @@ 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); } @@ -489,6 +505,10 @@ 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); } @@ -518,6 +538,11 @@ 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); @@ -553,6 +578,11 @@ 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); @@ -587,6 +617,10 @@ padding: var(--canon-spacing-2xl); } + .cu-2xl-p-2xs { + padding: var(--canon-spacing-2xs); + } + .cu-2xl-p-lg { padding: var(--canon-spacing-lg); } @@ -615,6 +649,10 @@ 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); } @@ -643,6 +681,10 @@ 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); } @@ -671,6 +713,10 @@ 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); } @@ -699,6 +745,10 @@ 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); } @@ -728,6 +778,11 @@ 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); @@ -763,6 +818,11 @@ 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); diff --git a/packages/canon/src/css/utilities/lg.css b/packages/canon/src/css/utilities/lg.css index 3053a0dde3..caa2adb310 100644 --- a/packages/canon/src/css/utilities/lg.css +++ b/packages/canon/src/css/utilities/lg.css @@ -377,6 +377,10 @@ margin: var(--canon-spacing-2xl); } + .cu-lg-m-2xs { + margin: var(--canon-spacing-2xs); + } + .cu-lg-m-lg { margin: var(--canon-spacing-lg); } @@ -405,6 +409,10 @@ 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); } @@ -433,6 +441,10 @@ 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); } @@ -461,6 +473,10 @@ 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); } @@ -489,6 +505,10 @@ 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); } @@ -518,6 +538,11 @@ 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); @@ -553,6 +578,11 @@ 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); @@ -587,6 +617,10 @@ padding: var(--canon-spacing-2xl); } + .cu-lg-p-2xs { + padding: var(--canon-spacing-2xs); + } + .cu-lg-p-lg { padding: var(--canon-spacing-lg); } @@ -615,6 +649,10 @@ 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); } @@ -643,6 +681,10 @@ 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); } @@ -671,6 +713,10 @@ 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); } @@ -699,6 +745,10 @@ 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); } @@ -728,6 +778,11 @@ 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); @@ -763,6 +818,11 @@ 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); diff --git a/packages/canon/src/css/utilities/md.css b/packages/canon/src/css/utilities/md.css index 62491f047a..fe6d56ad7c 100644 --- a/packages/canon/src/css/utilities/md.css +++ b/packages/canon/src/css/utilities/md.css @@ -377,6 +377,10 @@ margin: var(--canon-spacing-2xl); } + .cu-md-m-2xs { + margin: var(--canon-spacing-2xs); + } + .cu-md-m-lg { margin: var(--canon-spacing-lg); } @@ -405,6 +409,10 @@ 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); } @@ -433,6 +441,10 @@ 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); } @@ -461,6 +473,10 @@ 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); } @@ -489,6 +505,10 @@ 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); } @@ -518,6 +538,11 @@ 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); @@ -553,6 +578,11 @@ 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); @@ -587,6 +617,10 @@ padding: var(--canon-spacing-2xl); } + .cu-md-p-2xs { + padding: var(--canon-spacing-2xs); + } + .cu-md-p-lg { padding: var(--canon-spacing-lg); } @@ -615,6 +649,10 @@ 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); } @@ -643,6 +681,10 @@ 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); } @@ -671,6 +713,10 @@ 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); } @@ -699,6 +745,10 @@ 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); } @@ -728,6 +778,11 @@ 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); @@ -763,6 +818,11 @@ 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); diff --git a/packages/canon/src/css/utilities/sm.css b/packages/canon/src/css/utilities/sm.css index 60ddf67de5..87657c2222 100644 --- a/packages/canon/src/css/utilities/sm.css +++ b/packages/canon/src/css/utilities/sm.css @@ -377,6 +377,10 @@ margin: var(--canon-spacing-2xl); } + .cu-sm-m-2xs { + margin: var(--canon-spacing-2xs); + } + .cu-sm-m-lg { margin: var(--canon-spacing-lg); } @@ -405,6 +409,10 @@ 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); } @@ -433,6 +441,10 @@ 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); } @@ -461,6 +473,10 @@ 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); } @@ -489,6 +505,10 @@ 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); } @@ -518,6 +538,11 @@ 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); @@ -553,6 +578,11 @@ 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); @@ -587,6 +617,10 @@ padding: var(--canon-spacing-2xl); } + .cu-sm-p-2xs { + padding: var(--canon-spacing-2xs); + } + .cu-sm-p-lg { padding: var(--canon-spacing-lg); } @@ -615,6 +649,10 @@ 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); } @@ -643,6 +681,10 @@ 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); } @@ -671,6 +713,10 @@ 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); } @@ -699,6 +745,10 @@ 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); } @@ -728,6 +778,11 @@ 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); @@ -763,6 +818,11 @@ 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); diff --git a/packages/canon/src/css/utilities/xl.css b/packages/canon/src/css/utilities/xl.css index 0a999756ae..7d9e3b8add 100644 --- a/packages/canon/src/css/utilities/xl.css +++ b/packages/canon/src/css/utilities/xl.css @@ -377,6 +377,10 @@ margin: var(--canon-spacing-2xl); } + .cu-xl-m-2xs { + margin: var(--canon-spacing-2xs); + } + .cu-xl-m-lg { margin: var(--canon-spacing-lg); } @@ -405,6 +409,10 @@ 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); } @@ -433,6 +441,10 @@ 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); } @@ -461,6 +473,10 @@ 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); } @@ -489,6 +505,10 @@ 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); } @@ -518,6 +538,11 @@ 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); @@ -553,6 +578,11 @@ 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); @@ -587,6 +617,10 @@ padding: var(--canon-spacing-2xl); } + .cu-xl-p-2xs { + padding: var(--canon-spacing-2xs); + } + .cu-xl-p-lg { padding: var(--canon-spacing-lg); } @@ -615,6 +649,10 @@ 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); } @@ -643,6 +681,10 @@ 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); } @@ -671,6 +713,10 @@ 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); } @@ -699,6 +745,10 @@ 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); } @@ -728,6 +778,11 @@ 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); @@ -763,6 +818,11 @@ 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); diff --git a/packages/canon/src/css/utilities/xs.css b/packages/canon/src/css/utilities/xs.css index 28ec25c817..926a2cc627 100644 --- a/packages/canon/src/css/utilities/xs.css +++ b/packages/canon/src/css/utilities/xs.css @@ -376,6 +376,10 @@ margin: var(--canon-spacing-2xl); } + .cu-m-2xs { + margin: var(--canon-spacing-2xs); + } + .cu-m-lg { margin: var(--canon-spacing-lg); } @@ -404,6 +408,10 @@ margin-bottom: var(--canon-spacing-2xl); } + .cu-mb-2xs { + margin-bottom: var(--canon-spacing-2xs); + } + .cu-mb-lg { margin-bottom: var(--canon-spacing-lg); } @@ -432,6 +440,10 @@ margin-left: var(--canon-spacing-2xl); } + .cu-ml-2xs { + margin-left: var(--canon-spacing-2xs); + } + .cu-ml-lg { margin-left: var(--canon-spacing-lg); } @@ -460,6 +472,10 @@ margin-right: var(--canon-spacing-2xl); } + .cu-mr-2xs { + margin-right: var(--canon-spacing-2xs); + } + .cu-mr-lg { margin-right: var(--canon-spacing-lg); } @@ -488,6 +504,10 @@ margin-top: var(--canon-spacing-2xl); } + .cu-mt-2xs { + margin-top: var(--canon-spacing-2xs); + } + .cu-mt-lg { margin-top: var(--canon-spacing-lg); } @@ -517,6 +537,11 @@ 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); @@ -552,6 +577,11 @@ 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); @@ -586,6 +616,10 @@ padding: var(--canon-spacing-2xl); } + .cu-p-2xs { + padding: var(--canon-spacing-2xs); + } + .cu-p-lg { padding: var(--canon-spacing-lg); } @@ -614,6 +648,10 @@ padding-bottom: var(--canon-spacing-2xl); } + .cu-pb-2xs { + padding-bottom: var(--canon-spacing-2xs); + } + .cu-pb-lg { padding-bottom: var(--canon-spacing-lg); } @@ -642,6 +680,10 @@ padding-left: var(--canon-spacing-2xl); } + .cu-pl-2xs { + padding-left: var(--canon-spacing-2xs); + } + .cu-pl-lg { padding-left: var(--canon-spacing-lg); } @@ -670,6 +712,10 @@ padding-right: var(--canon-spacing-2xl); } + .cu-pr-2xs { + padding-right: var(--canon-spacing-2xs); + } + .cu-pr-lg { padding-right: var(--canon-spacing-lg); } @@ -698,6 +744,10 @@ padding-top: var(--canon-spacing-2xl); } + .cu-pt-2xs { + padding-top: var(--canon-spacing-2xs); + } + .cu-pt-lg { padding-top: var(--canon-spacing-lg); } @@ -727,6 +777,11 @@ 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); @@ -762,6 +817,11 @@ 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); From 08bdc39c54d83484b86d5358a0d1f6de9032eff9 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Tue, 7 Jan 2025 15:10:35 +0000 Subject: [PATCH 19/19] Fix components issues Signed-off-by: Charles de Dreuille --- .../canon/src/components/Button/styles.css | 6 +- .../canon/src/components/Checkbox/styles.css | 56 +++++++++---------- .../canon/src/components/Heading/styles.css | 12 ++-- .../canon/src/components/Table/styles.css | 2 +- 4 files changed, 35 insertions(+), 41 deletions(-) diff --git a/packages/canon/src/components/Button/styles.css b/packages/canon/src/components/Button/styles.css index 52fcb57a18..7af027ddcd 100644 --- a/packages/canon/src/components/Button/styles.css +++ b/packages/canon/src/components/Button/styles.css @@ -35,18 +35,18 @@ &:hover { background-color: transparent; - box-shadow: inset 0 0 0 1px var(--canon-outline-focus); + box-shadow: inset 0 0 0 1px var(--canon-border-focus); color: var(--canon-text-primary); } } .cn-button-secondary { background-color: transparent; - box-shadow: inset 0 0 0 1px var(--canon-outline); + box-shadow: inset 0 0 0 1px var(--canon-border-base); color: var(--canon-text-primary); &:hover { - box-shadow: inset 0 0 0 1px var(--canon-outline-hover); + box-shadow: inset 0 0 0 1px var(--canon-border-hover); } } diff --git a/packages/canon/src/components/Checkbox/styles.css b/packages/canon/src/components/Checkbox/styles.css index e4ac30a447..c1f285f7c7 100644 --- a/packages/canon/src/components/Checkbox/styles.css +++ b/packages/canon/src/components/Checkbox/styles.css @@ -9,39 +9,33 @@ color: var(--canon-text-primary); user-select: none; - & .checkbox { - all: unset; - display: flex; - align-items: center; - justify-content: center; - width: 16px; - height: 16px; - box-shadow: inset 0 0 0 1px var(--canon-outline); - cursor: pointer; - border-radius: 2px; - transition: all 0.2s ease-in-out; - - &[data-state='unchecked'] { - & .checkbox-indicator { - display: none; - } - } - - &[data-state='checked'] { - background: var(--canon-accent); - } - } - - & .checkbox-indicator { - display: flex; - align-items: center; - justify-content: center; - color: var(--canon-text-primary-on-accent); - } - &:hover { & .checkbox { - box-shadow: inset 0 0 0 1px var(--canon-outline-hover); + box-shadow: inset 0 0 0 1px var(--canon-border-hover); } } } + +.checkbox { + all: unset; + display: flex; + align-items: center; + justify-content: center; + width: 1rem; + height: 1rem; + box-shadow: inset 0 0 0 1px var(--canon-border-base); + cursor: pointer; + border-radius: 2px; + transition: all 0.2s ease-in-out; + + &[data-checked] { + background-color: var(--canon-accent); + } +} + +.checkbox-indicator { + display: flex; + align-items: center; + justify-content: center; + color: var(--canon-text-primary-on-accent); +} diff --git a/packages/canon/src/components/Heading/styles.css b/packages/canon/src/components/Heading/styles.css index d2d6a27576..446a5b7d2b 100644 --- a/packages/canon/src/components/Heading/styles.css +++ b/packages/canon/src/components/Heading/styles.css @@ -23,36 +23,36 @@ &.text-display { font-size: var(--canon-font-size-display); line-height: 100%; - font-weight: var(--canon-font-bold); + font-weight: var(--canon-font-weight-bold); } &.text-title1 { font-size: var(--canon-font-size-title1); line-height: 100%; - font-weight: var(--canon-font-bold); + font-weight: var(--canon-font-weight-bold); } &.text-title2 { font-size: var(--canon-font-size-title2); line-height: 100%; - font-weight: var(--canon-font-bold); + font-weight: var(--canon-font-weight-bold); } &.text-title3 { font-size: var(--canon-font-size-title3); line-height: 100%; - font-weight: var(--canon-font-bold); + font-weight: var(--canon-font-weight-bold); } &.text-title4 { font-size: var(--canon-font-size-title4); line-height: 100%; - font-weight: var(--canon-font-bold); + font-weight: var(--canon-font-weight-bold); } &.text-title5 { font-size: var(--canon-font-size-title5); line-height: 100%; - font-weight: var(--canon-font-bold); + font-weight: var(--canon-font-weight-bold); } } diff --git a/packages/canon/src/components/Table/styles.css b/packages/canon/src/components/Table/styles.css index bf3d8603e3..574fae67bf 100644 --- a/packages/canon/src/components/Table/styles.css +++ b/packages/canon/src/components/Table/styles.css @@ -18,7 +18,7 @@ .table-header { tr { - /* border-bottom: 1px solid var(--canon-outline); */ + /* border-bottom: 1px solid var(--canon-border); */ } }