From 94df23321e4b464b08f0841e09fde63cbe1e0875 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Fri, 21 Jun 2024 10:00:33 +0200 Subject: [PATCH 1/3] chore(turbo): add env vars to turbo config --- turbo.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/turbo.json b/turbo.json index 77b54231635..de2a2e6fc5d 100644 --- a/turbo.json +++ b/turbo.json @@ -1,7 +1,10 @@ { "$schema": "https://turborepo.org/schema.json", "globalEnv": [ - "CI" + "CI", + "FIGMA_API_TOKEN", + "GITHUB_TOKEN", + "CSC" ], "globalDependencies": [ ".env" From fc2715796b32b716ce848d3d4db83e522202bc47 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Fri, 21 Jun 2024 12:32:35 +0200 Subject: [PATCH 2/3] docs(figma-plugin): handle new figma links (#1346) --- .github/workflows/pr.yml | 1 + .../docs/controls/_avatar_styleguide.md | 4 +-- .../docs/controls/_blind_styleguide.md | 8 ++--- .../docs/controls/_breadcrumb_styleguide.md | 6 ++-- .../docs/controls/_card-list_styleguide.md | 6 ++-- .../docs/controls/_card_styleguide.md | 10 +++--- .../controls/_category-filter_styleguide.md | 4 +-- .../docs/controls/_chip_styleguide.md | 6 ++-- .../controls/_content-header_styleguide.md | 4 +-- .../docs/controls/_dropdown_styleguide.md | 8 ++--- .../docs/controls/_layout-grid_styleguide.md | 6 ++-- .../docs/controls/_panes_styleguide.md | 6 ++-- .../docs/controls/_pill_styleguide.md | 4 +-- .../_about-and-legal_styleguide.md | 2 +- .../_application-header_styleguide.md | 10 +++--- .../_application-menu_styleguide.md | 14 ++++----- .../_application_styleguide.md | 2 +- .../_basic-navigation_styleguide.md | 6 ++-- .../application-frame/_content_styleguide.md | 2 +- .../_map-navigation_styleguide.md | 2 +- .../_popover-news_styleguide.md | 2 +- .../application-frame/_settings_styleguide.md | 2 +- .../controls/buttons/_button_styleguide.md | 4 +-- .../buttons/_dropdown-button_styleguide.md | 4 +-- .../buttons/_icon-button_styleguide.md | 2 +- .../buttons/_link-button_styleguide.md | 4 +-- .../buttons/_split-button_styleguide.md | 4 +-- .../buttons/_toggle-button_styleguide.md | 2 +- .../guidelines/_theme-switching_styleguide.md | 4 +-- .../docs/icon-library/_icon_styleguide.md | 26 ++++++++-------- packages/documentation/docs/roadmap.md | 2 +- packages/figma-plugin/package.json | 6 ++-- packages/figma-plugin/src/figma.test.ts | 26 ++++++++++++++++ packages/figma-plugin/src/figma.ts | 31 ++++++++++++------- packages/figma-plugin/tsconfig.json | 4 +++ pnpm-lock.yaml | 21 ++++++------- 36 files changed, 147 insertions(+), 108 deletions(-) create mode 100644 packages/figma-plugin/src/figma.test.ts diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ee3bd919464..8593b5252e4 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -48,6 +48,7 @@ jobs: - packages/react/** - packages/angular-test-app/** - packages/react-test-app/** + - packages/figma-plugin/** build: needs: changes diff --git a/packages/documentation/docs/controls/_avatar_styleguide.md b/packages/documentation/docs/controls/_avatar_styleguide.md index 59bbe81b7da..e0c4a62fb1c 100644 --- a/packages/documentation/docs/controls/_avatar_styleguide.md +++ b/packages/documentation/docs/controls/_avatar_styleguide.md @@ -3,7 +3,7 @@ Avatars are visual or textual representations of individual identities and they ## Options -![Avatar overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=963-565&mode=design&t=M9CowfOcGyqnSycV-4) +![Avatar overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=963-565&mode=design&t=M9CowfOcGyqnSycV-4) | Option | Description and usage | | -------------------------- | ------------------------------------------------------------------------------------------------------------ | @@ -16,6 +16,6 @@ The avatar is a display-only component with no further interactions. Images prov ## Dos and Don’ts -![Avatar dos and Don‘ts](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=975-13&mode=design&t=SxUA6AcHswBAiIzi-4) +![Avatar dos and Don‘ts](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=975-13&mode=design&t=SxUA6AcHswBAiIzi-4) - Don't use more than 2 characters when using the "Initials" option diff --git a/packages/documentation/docs/controls/_blind_styleguide.md b/packages/documentation/docs/controls/_blind_styleguide.md index 85774abdf0d..d18bf2758d8 100644 --- a/packages/documentation/docs/controls/_blind_styleguide.md +++ b/packages/documentation/docs/controls/_blind_styleguide.md @@ -7,7 +7,7 @@ Blinds are UI controls that allow the users to hide or reveal content by clickin Blinds consist of a header section on the top and a content section below. The header section contains a chevron on the left followed by the blind's label. Within the content section, content can be placed freely. -![Blind overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2%3A2&mode=design&t=9faEnH99BaAxqCGM-1) +![Blind overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2-2&mode=design&t=9faEnH99BaAxqCGM-1) 1. Header section 2. Content section @@ -16,7 +16,7 @@ Blinds consist of a header section on the top and a content section below. The h Multiple blinds can be placed below each other to create an accordion. The recommended distance between the blinds is `0.5rem`. Typically, only one blind can be opened within an accordion but users can be allowed to open multiple blinds at a time. -![Accordion](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2%3A655&mode=design&t=9faEnH99BaAxqCGM-1) +![Accordion](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2-655&mode=design&t=9faEnH99BaAxqCGM-1) ## Variants @@ -27,7 +27,7 @@ Multiple blind variants are available: - **Primary**: Variant for high visual emphasis - **State-related variants**: Alarm, critical, warning, success, info, neutral -![Blind variants](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=929%3A47485&mode=design&t=9faEnH99BaAxqCGM-1) +![Blind variants](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=929-47485&mode=design&t=9faEnH99BaAxqCGM-1) ## Options @@ -43,7 +43,7 @@ The user expands and collapses the blind by pressing anywhere in the header sect For all blind variants, a default, hover, active and focused state is available. -![Blind states](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2%3A352&mode=design&t=9faEnH99BaAxqCGM-1) +![Blind states](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2-352&mode=design&t=9faEnH99BaAxqCGM-1) ## Dos and don'ts diff --git a/packages/documentation/docs/controls/_breadcrumb_styleguide.md b/packages/documentation/docs/controls/_breadcrumb_styleguide.md index 9e050b4db21..be441e5840d 100644 --- a/packages/documentation/docs/controls/_breadcrumb_styleguide.md +++ b/packages/documentation/docs/controls/_breadcrumb_styleguide.md @@ -3,7 +3,7 @@ Breadcrumbs make the structure of applications transparent to users. We typicall Breadcrumb items are interactive. Users navigate to their respective location by pressing the item. Each item contains a breadcrumb label. All items in the breadcrumb path are always followed by a chevron icon except for the last item. -![Breadcrumb overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=20%3A8463&mode=design&t=JS1Aklcq48swr0Im-1) +![Breadcrumb overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=20-8463&mode=design&t=JS1Aklcq48swr0Im-1) 1. Breadcrumb item 2. Separator 3. Dropdown @@ -12,7 +12,7 @@ Breadcrumb items are interactive. Users navigate to their respective location by Breadcrumbs are available as a ghost and solid variant. Both variants differ in font and fill color but interact in the same pattern. We typically use the ghost variant to create a lower visual emphasis for users. -![Breadcrumb variants](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=20%3A352&mode=design&t=JS1Aklcq48swr0Im-1) +![Breadcrumb variants](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=20-352&mode=design&t=JS1Aklcq48swr0Im-1) ## Options - **Icon**: Breadcrumb items can, but don't have to, include an icon. The icon is positioned before the breadcrumb label. Icons can be included for each item or only for specific items (e.g. the root item). @@ -30,7 +30,7 @@ Breadcrumbs are available as a ghost and solid variant. Both variants differ in Interactive items can take one of four states: Default, hover, active and focused. Non-interactive items are always in default state. -![States of breadcrumb items](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=120%3A7463&mode=design&t=JS1Aklcq48swr0Im-1) +![States of breadcrumb items](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=120-7463&mode=design&t=JS1Aklcq48swr0Im-1) ## Dos and don'ts diff --git a/packages/documentation/docs/controls/_card-list_styleguide.md b/packages/documentation/docs/controls/_card-list_styleguide.md index fe2663827b4..8371bf9bdcb 100644 --- a/packages/documentation/docs/controls/_card-list_styleguide.md +++ b/packages/documentation/docs/controls/_card-list_styleguide.md @@ -2,7 +2,7 @@ Card lists are UI controls that display a large number of cards or items of the Card lists consist of a header section at the top and a content section below. The header section includes an icon button with a chevron on the left, followed by the card list's label. In the content section, items of the same type can be arranged in two different layout styles: stack and scroll. -![Card list overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=897%3A31906&mode=design&t=2pf1CqY5ifYKN3F2-1) +![Card list overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=897-31906&mode=design&t=2pf1CqY5ifYKN3F2-1) 1. Header section 2. Content section @@ -11,11 +11,11 @@ Card lists consist of a header section at the top and a content section below. T ## Types The stack card list style displays content items from left to right next to each other and wraps them into a new line when space runs out. This means the height of the section can dynamically change. -![Card list - stack style](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=910%3A8581&mode=design&t=2pf1CqY5ifYKN3F2-1) +![Card list - stack style](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=910-8581&mode=design&t=2pf1CqY5ifYKN3F2-1) The scroll card list style displays the content items from left to right next to each other in a single row. When the space runs out, horizontal scrolling is enabled, indicated by a semi-transparent area on the left or right end of the content section. -![Card list - scroll style](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=915%3A8647&mode=design&t=2pf1CqY5ifYKN3F2-1) +![Card list - scroll style](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=915-8647&mode=design&t=2pf1CqY5ifYKN3F2-1) ## Options - **Label**: Card lists can include a label in the header section. The label is positioned right next to the chevron. diff --git a/packages/documentation/docs/controls/_card_styleguide.md b/packages/documentation/docs/controls/_card_styleguide.md index 80fdfc16b7f..185a55b85e8 100644 --- a/packages/documentation/docs/controls/_card_styleguide.md +++ b/packages/documentation/docs/controls/_card_styleguide.md @@ -2,7 +2,7 @@ Cards are UI controls used to neatly organize and group related information abou Cards are interactive elements. The entire container is clickable and triggers a single action. -![Card overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858%3A4956&mode=design&t=RDimbEsIHFIXIByo-1) +![Card overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858-4956&mode=design&t=RDimbEsIHFIXIByo-1) 1. Icon 2. Notification 3. Heading @@ -19,17 +19,17 @@ Action cards have an icon, a heading and a subheading. We use them to trigger ke Push cards contain a notification value in addition to the icon, heading, and subheading. These cards have an expandable section placed at the bottom of the container. When clicked, the expandable section displays additional content. The notification value is logically related to the items shown in the expandable area. Push cards have a fixed content height of 11rem that cannot be changed. -![Card types](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858%3A4953&mode=design&t=RDimbEsIHFIXIByo-1) +![Card types](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858-4953&mode=design&t=RDimbEsIHFIXIByo-1) ## Customization We also offer a card container component that enables designers to display various types of content, such as images, charts or key data. Some small rules apply: Background images can stretch over the complete size of the container, whereas the card content must maintain a default padding of at least `1rem`. -![Card examples](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1329%3A26613&mode=design&t=sOZRNgWt7R52iLSF-1) +![Card examples](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1329-26613&mode=design&t=sOZRNgWt7R52iLSF-1) ## Variants Cards are available in nine variants: Insight (outline style), notification (filled style), alarm, critical, warning, success, info, neutral and primary. Each variant emphasizes different aspects to guide the user's attention. These variants differ visually through the presence of an outline and a distinct container fill color, but they all follow the same interaction pattern. We typically use the insight variant as the default choice as we find this creates a more balanced and subtle appearance for users. -![Card variants](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858%3A4969&mode=design&t=RDimbEsIHFIXIByo-1) +![Card variants](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858-4969&mode=design&t=RDimbEsIHFIXIByo-1) ## Options @@ -47,7 +47,7 @@ Cards are available in nine variants: Insight (outline style), notification (fil ## States Cards can take one of three states: Default, hover and active. Action cards also offer a selected state. -![Card states](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858%3A4979&mode=design&t=RDimbEsIHFIXIByo-1) +![Card states](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=858-4979&mode=design&t=RDimbEsIHFIXIByo-1) ## Dos and don'ts - Do group cards in lists or grids (use the [card list](card-list.md) control) diff --git a/packages/documentation/docs/controls/_category-filter_styleguide.md b/packages/documentation/docs/controls/_category-filter_styleguide.md index ed772062ec9..4fafe8c4b7b 100644 --- a/packages/documentation/docs/controls/_category-filter_styleguide.md +++ b/packages/documentation/docs/controls/_category-filter_styleguide.md @@ -1,6 +1,6 @@ The category filter component enhances data navigation and user experience. We typically use a category filter to efficiently navigate large data sets, allowing users to quickly narrow their search by selecting predefined categories. It’s particularly useful in scenarios with complex data. The filter also enhances user experience by providing autocomplete suggestions and customizable filter conditions. -![Category filter overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1799%3A38402&mode=design&t=hgAA8GogE70JbHHy-1) +![Category filter overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1799-38402&mode=design&t=hgAA8GogE70JbHHy-1) 1. Container 2. Search icon 3. Input chip @@ -31,7 +31,7 @@ The category filter component enhances data navigation and user experience. We t Category filter has six states: Default, hover, active, disabled, read-only and focused. -![Category filter states](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1799-38415&mode=design&t=1vxCdaFjmBNHp8Sk-4) +![Category filter states](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1799-38415&mode=design&t=1vxCdaFjmBNHp8Sk-4) - **Read-only**: By setting the category filter to read-only, accidental data modifications or deletions can be prevented. This can be particularly useful when dealing with critical or sensitive information that should not be altered without proper authorization. - **Disabled**: This state is typically applied when the element is not applicable to the current context or when certain conditions must be met before the category filter can be enabled. diff --git a/packages/documentation/docs/controls/_chip_styleguide.md b/packages/documentation/docs/controls/_chip_styleguide.md index 2cc646934d0..5a7a4c4536d 100644 --- a/packages/documentation/docs/controls/_chip_styleguide.md +++ b/packages/documentation/docs/controls/_chip_styleguide.md @@ -1,6 +1,6 @@ Chips are components used to display small pieces of information in a compact and visually appealing way. Typically chips contain a concise label and sometimes an icon, and they are clickable and closable. -![Chip overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1149%3A41643&mode=design&t=ruQOzpPQJMKwnk8f-1) +![Chip overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1149-41643&mode=design&t=ruQOzpPQJMKwnk8f-1) 1. Container 2. Label text @@ -17,7 +17,7 @@ Chip variants: - **State-related variants**: Alarm, critical, warning, success, info and neutral - **Custom**: For a customized background and label color -![Chip variants](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1201%3A9512&mode=design&t=ruQOzpPQJMKwnk8f-1) +![Chip variants](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1201-9512&mode=design&t=ruQOzpPQJMKwnk8f-1) ## Options @@ -42,7 +42,7 @@ Chip variants: Chips take a default, hover, focused or active state with a varying background color. For the custom chip variant, the specified colors for font and background are applied to all states. -![Chip states](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1246%3A6190&mode=design&t=GHOok90R6TcaUrYi-1) +![Chip states](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1246-6190&mode=design&t=GHOok90R6TcaUrYi-1) ## Dos and Don'ts diff --git a/packages/documentation/docs/controls/_content-header_styleguide.md b/packages/documentation/docs/controls/_content-header_styleguide.md index f316733bbe2..558051240ba 100644 --- a/packages/documentation/docs/controls/_content-header_styleguide.md +++ b/packages/documentation/docs/controls/_content-header_styleguide.md @@ -1,7 +1,7 @@ The content header provides a brief overview of the content on a page. It helps our users understand what the page is about. We typically use it at the very top of the page to show a clear hierarchy of the page. -![Content header overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2250-4784&mode=design&t=XmCepM9jPR9PImPw-4) +![Content header overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2250-4784&mode=design&t=XmCepM9jPR9PImPw-4) 1. Back button 2. Content title @@ -14,7 +14,7 @@ Our content header variants makes it easier to achieve a well-balanced visual hi * Primary: In our applications, we most often use the primary variant for main pages or primary sections. * Secondary: We typically use this variant when we want to provide context or actions for a specific section of a page, such as when displaying detailed information related to a selected item from a list. -![Content header variants](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2250-9102&mode=design&t=XmCepM9jPR9PImPw-4) +![Content header variants](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2250-9102&mode=design&t=XmCepM9jPR9PImPw-4) ## Options - **Back button**: Enable if you want to provide a way for the user to navigate back. diff --git a/packages/documentation/docs/controls/_dropdown_styleguide.md b/packages/documentation/docs/controls/_dropdown_styleguide.md index 8bd43fe046d..fe57e556721 100644 --- a/packages/documentation/docs/controls/_dropdown_styleguide.md +++ b/packages/documentation/docs/controls/_dropdown_styleguide.md @@ -1,7 +1,7 @@ Dropdown containers display a menu with additional items when users click on the trigger element, e.g. a dropdown button. Clicking on one of the items in the dropdown performs the action. We typically use dropdowns to allow users to select one option from a list. -![Overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2353-2278&mode=design&t=OVHeXvLZYLkP2CzN-4) +![Overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2353-2278&mode=design&t=OVHeXvLZYLkP2CzN-4) 1. Dropdown container 2. Item @@ -32,7 +32,7 @@ Dropdown containers display a menu with additional items when users click on the - **Placement:** Place a dropdown at the top, bottom, left or right edge as well as at the beginning or end of the trigger/anchor element. The placement may be automatically adjusted in case it cannot be displayed correctly (detailed behavior described in the context section below). We typically use the default (bottom right) placement option to ensure consistency. - **Date Selection:** Use the component [date dropdown](date-dropdown.md) to get a date selection in the dropdown. -![Dropdown Examples](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2372-2696&mode=design&t=OVHeXvLZYLkP2CzN-4) +![Dropdown Examples](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2372-2696&mode=design&t=OVHeXvLZYLkP2CzN-4) ## Behavior in context - **Text truncation:** The labels of the items and the header only consist of one line. A truncation only occurs if there is not enough space on the screen. @@ -45,7 +45,7 @@ Dropdown containers display a menu with additional items when users click on the ## States Dropdown items have five states: Default, hover, active, disabled and focused. When a submenu is in an active state, the submenu displays an additional dropdown with selectable options. -![Item States](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2343-42235&mode=design&t=OVHeXvLZYLkP2CzN-4) +![Item States](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2343-42235&mode=design&t=OVHeXvLZYLkP2CzN-4) ## Dos and Don’ts - Do structure dropdown items coherently with submenus, quick actions and separators @@ -59,4 +59,4 @@ Dropdown items have five states: Default, hover, active, disabled and focused. W - [Dropdown button](buttons/dropdown-button.md) - [Split button](buttons/split-button.md) - [Date dropdown](date-dropdown.md) -- [Select](select.md) \ No newline at end of file +- [Select](select.md) diff --git a/packages/documentation/docs/controls/_layout-grid_styleguide.md b/packages/documentation/docs/controls/_layout-grid_styleguide.md index 749c7bd36e9..4377c1e4c63 100644 --- a/packages/documentation/docs/controls/_layout-grid_styleguide.md +++ b/packages/documentation/docs/controls/_layout-grid_styleguide.md @@ -2,7 +2,7 @@ Grids are typically used to make layouts more cohesive and consistent. With layo Commonly, the layout grid is based on a 12 column layout. Columns are nested in rows and adapt in width according to the available space. Content is placed within columns. Column widths are set as percentage. -![Layout grid overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=800%3A2637&mode=design&t=R26qUrZCUTY2iIxG-1) +![Layout grid overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=800-2637&mode=design&t=R26qUrZCUTY2iIxG-1) 1. Layout grid 2. Row 3. Column @@ -20,7 +20,7 @@ Commonly, the layout grid is based on a 12 column layout. Columns are nested in Example: In a 12 column layout with 6 columns with equal width in place, each column takes a space of 1/6 (or 2 out of 12). When setting the size of the first column to ``3`` (corresponding to 3 out of 12), the remaining columns adjust their width to fit within the remaining space of 3/4 (or 9 out of 12). -![Example for column size option](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=796%3A3&mode=design&t=R26qUrZCUTY2iIxG-1) +![Example for column size option](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=796-3&mode=design&t=R26qUrZCUTY2iIxG-1) - A column size ``auto`` is available. When set to ``auto``, column width is defined by the width of its content. The remaining columns resize to fill the row. - Column size can be tailored to viewports. Three viewports are currently supported. The viewport size can't be adjusted at this point. When setting the size for one viewport, larger viewports are adjusted in the same way. @@ -33,7 +33,7 @@ Example: In a 12 column layout with 6 columns with equal width in place, each co Example: Here is an example of a 12 column layout grid with 4 columns, each with equal width. The columns' ``size`` is set to ``12`` and for medium viewports and larger (``size md``) it is set to ``3``. On small viewports, the columns take the full width and stack vertically. For medium and large viewports, columns take equal width. -![Example for viewport-based column sizes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=800%3A23920&mode=design&t=R26qUrZCUTY2iIxG-1) +![Example for viewport-based column sizes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=800-23920&mode=design&t=R26qUrZCUTY2iIxG-1) ## Behavior in context diff --git a/packages/documentation/docs/controls/_panes_styleguide.md b/packages/documentation/docs/controls/_panes_styleguide.md index 8f2ae39a362..43a0dd124a6 100644 --- a/packages/documentation/docs/controls/_panes_styleguide.md +++ b/packages/documentation/docs/controls/_panes_styleguide.md @@ -2,7 +2,7 @@ Panes are interactive components that allow users to access content that isn't c Panes help users focus on tasks as related controls are visually grouped and the main content has less information. They are also beneficial for compact and hierarchically organized content and provide a more dynamic layout. -![Pane overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1680-22044&mode=design&t=iP7h44Wf17P209P7-4) +![Pane overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1680-22044&mode=design&t=iP7h44Wf17P209P7-4) 1. Left pane, inline 2. Top pane, inline @@ -20,7 +20,7 @@ Panes help users focus on tasks as related controls are visually grouped and the - **Variant**: When used within a layout, floating panes are placed above (z-axis) the main content but below the navigation menu and header. When expanded, they cover a part of the main content. Inline panes are placed on one level with the main content. When expanded, they move the main content and reduce its available space. - **Layout**: Depending on which pane needs more focus, the top/bottom or left/right panes can use more space. -![Pane layouts](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1681-28910&mode=design&t=iP7h44Wf17P209P7-4) +![Pane layouts](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1681-28910&mode=design&t=iP7h44Wf17P209P7-4) 1. Full height (left/right) 2. Full width (top/bottom) @@ -33,7 +33,7 @@ Panes help users focus on tasks as related controls are visually grouped and the - **Placement**: We typically fit a pane layout within the complete content area of a page bounded by the application header on top and the navigation menu on the left. - **Responsiveness**: On large and medium size screens, all panes have a maximum width or height of `50%` of the available space. On small screens, all panes have full width and expand to full height, but the header and navigation menu remain visible. We show collapsed left and right panes on the top and bottom for a more efficient use of space. -![Pane small viewport](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1680-26548&mode=design&t=iP7h44Wf17P209P7-4) +![Pane small viewport](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1680-26548&mode=design&t=iP7h44Wf17P209P7-4) 1. Inline panes in collapsed state 2. Inline or floating pane in expanded state diff --git a/packages/documentation/docs/controls/_pill_styleguide.md b/packages/documentation/docs/controls/_pill_styleguide.md index 65658b4e592..b4e181f1f0d 100644 --- a/packages/documentation/docs/controls/_pill_styleguide.md +++ b/packages/documentation/docs/controls/_pill_styleguide.md @@ -1,7 +1,7 @@ Pills are components used to display small pieces of information in a compact and visually appealing way. Typically pills contain a concise label and sometimes an icon, and they aren't clickable or closable. -![Pill overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1377%3A3110&mode=design&t=ZmcRP4ggXtr8b7vZ-1) +![Pill overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1377-3110&mode=design&t=ZmcRP4ggXtr8b7vZ-1) 1. Container 2. Icon @@ -16,7 +16,7 @@ Pill variants: - **State-related variants**: Alarm, critical, warning, success, info and neutral. - **Custom**: For a customized background and label color. -![Pill variants](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1375%3A1985&mode=design&t=ZmcRP4ggXtr8b7vZ-1) +![Pill variants](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1375-1985&mode=design&t=ZmcRP4ggXtr8b7vZ-1) ## Options diff --git a/packages/documentation/docs/controls/application-frame/_about-and-legal_styleguide.md b/packages/documentation/docs/controls/application-frame/_about-and-legal_styleguide.md index a90b3eb59bf..fe4375c4fe2 100644 --- a/packages/documentation/docs/controls/application-frame/_about-and-legal_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_about-and-legal_styleguide.md @@ -1,6 +1,6 @@ The About and legal component is an overlay we typically use to show application information, application versions, license terms, legal regulations, copyright information and other legal content. It appears when users click on the "About and legal" icon (1) and overlays the current content. Closing this overlay brings users back to the original content. -![About and legal overlay](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1029-79866&mode=design&t=Ntzn8IlSOlPey8s5-11) +![About and legal overlay](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1029-79866&mode=design&t=Ntzn8IlSOlPey8s5-11) - (1) Info icon: opens and closes the About and legal overlay - (2) Replaceable content header: with default string "About & legal information" diff --git a/packages/documentation/docs/controls/application-frame/_application-header_styleguide.md b/packages/documentation/docs/controls/application-frame/_application-header_styleguide.md index f7aeb4ce7e4..0d5f1421c4c 100644 --- a/packages/documentation/docs/controls/application-frame/_application-header_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_application-header_styleguide.md @@ -1,6 +1,6 @@ import Playground from '@site/src/components/PlaygroundV2'; -![Application header with different options](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1634-56424&mode=design&t=4XzscFw57dE7McUX-11) +![Application header with different options](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1634-56424&mode=design&t=4XzscFw57dE7McUX-11) 1. [Application switch](#application-switch) (optional) 2. [Brand logo](#brand-logo) @@ -24,7 +24,7 @@ The application name (3) shows the official name of the application. It can be e ### Slot -![Examples of slot usages](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1679-19526&mode=design&t=UPXhDWuRHtygtfFI-11) +![Examples of slot usages](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1679-19526&mode=design&t=UPXhDWuRHtygtfFI-11) We use this slot to provide additional high-level information or actions and functions which may impact the application context, e.g. mode switching. Note that overflows are not handled automatically; at breakpoint sm the slot collapses and is only accessible via the overflow icon. @@ -40,7 +40,7 @@ We typically use the slot for: With the new modular application frame we moved the avatar from the navigation menu to the application header. This ensures the avatar has security-relevant information available at all breakpoints. Nonetheless, if you still use the [basic navigation](./basic-navigation.md) or the [map navigation](./map-navigation.md), the avatar is still in the navigation menu for compatibility reasons. -![Avatar and avatar dropdown](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1635-60462&mode=design&t=UPXhDWuRHtygtfFI-11) +![Avatar and avatar dropdown](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1635-60462&mode=design&t=UPXhDWuRHtygtfFI-11) 6. Avatar dropdown 7. User avatar @@ -51,7 +51,7 @@ The avatar is an optional element and indicates the current logged in user. If y Clicking the avatar opens a dropdown (6) with additional user information (7, 8, 9) and possibly other user related actions like log out, profile settings or user settings. -![Examples of access login](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1636-62468&mode=design&t=4XzscFw57dE7McUX-11) +![Examples of access login](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1636-62468&mode=design&t=4XzscFw57dE7McUX-11) If your application can be used without being logged in to, you can offer access to a login process in different ways, for example: - Show a log in button in the [slot for additional elements](#slot) and hide the avatar @@ -65,7 +65,7 @@ If the application is hosted inside a framework that comes with its own header, The header automatically adapts the breakpoints defined in the [application](./application.md). -![Application header at breakpoints lg/md and sm](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1636-62980&mode=design&t=4XzscFw57dE7McUX-11) +![Application header at breakpoints lg/md and sm](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1636-62980&mode=design&t=4XzscFw57dE7McUX-11) 10. Layout at breakpoint lg and md 11. Layout at breakpoint (sm) diff --git a/packages/documentation/docs/controls/application-frame/_application-menu_styleguide.md b/packages/documentation/docs/controls/application-frame/_application-menu_styleguide.md index 3ed870a6a84..f6785e95733 100644 --- a/packages/documentation/docs/controls/application-frame/_application-menu_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_application-menu_styleguide.md @@ -1,6 +1,6 @@ The navigation menu is an essential part of your application. It offers a way to directly navigate to the main application parts and it can give your users access to legal and version information, and access to settings. -![Navigation menu collapsed and expanded](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=990-122297&mode=design&t=JbZngO5IAS8hvpTb-11) +![Navigation menu collapsed and expanded](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=990-122297&mode=design&t=JbZngO5IAS8hvpTb-11) 1. Expand/collapse icon button: Expands and collapses the navigation menu. 2. [Avatar button](#avatar-button,): Shows the logged-in user and provides access to user-related actions (optional) @@ -13,7 +13,7 @@ The navigation menu is an essential part of your application. It offers a way to The avatar button is optional. It shows information about the logged-in user. When collapsed it shows only the avatar, and when expanded it shows additional user information. A dropdown menu with user-related actions appears when selecting (note the available actions are specific to each application). The log out item is available by default. **Please note:** Only basic navigation and map navigation still use the avatar in the navigation menu. The new [application](./application.md) frame uses the avatar inside the [application header](./application-header.md). -![Avatar dropdown menu](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1013-70909&mode=design&t=Ch2wsi2EtQ3sPBpS-11) +![Avatar dropdown menu](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1013-70909&mode=design&t=Ch2wsi2EtQ3sPBpS-11) ### Avatar button options - **top:** Defines the first line of the additional user information. We typically use this to show primary user information (first and last name or username), depending on the available information. Overflows are clipped with an ellipsis (...). @@ -26,7 +26,7 @@ Menu items represent the main parts of an application. They have an icon for qui Menu categories can host menu items as a second navigation level. -![Navigation item](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=998-67465&mode=design&t=puecEZZMJ24R1ngI-11) +![Navigation item](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=998-67465&mode=design&t=puecEZZMJ24R1ngI-11) 1. Selected item 2. Item with notification @@ -35,12 +35,12 @@ Menu categories can host menu items as a second navigation level. 5. Second level navigation menu, appears when navigation menu is collapsed 6. Second level navigation expanded inline, appears when navigation menu is expanded -![Selected navigation item with sub-items](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1005-10267&mode=design&t=ljAWsgheUZngQeQG-11) +![Selected navigation item with sub-items](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1005-10267&mode=design&t=ljAWsgheUZngQeQG-11) 7. Menu category appears selected if one of its children items is selected 8. When second level menu items are visible, the currently selected item also appears selected -![Second level items with icons](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2062-21146&mode=design&t=E5f1YhpwznaV7Qjk-11) +![Second level items with icons](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2062-21146&mode=design&t=E5f1YhpwznaV7Qjk-11) Second level items with icons in collapsed (9) and expanded (10) navigation menu @@ -55,7 +55,7 @@ We usually don’t use icons on the second navigation level as in most cases it ### Bottom section Items in this section do not navigate away from the current content. They either toggle states, e.g. light and dark mode, or open a layer over the current content. This means users do not lose their current workflow by interacting with these items. -![Bottom section icons](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1005-10817&mode=design&t=ljAWsgheUZngQeQG-11) +![Bottom section icons](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1005-10817&mode=design&t=ljAWsgheUZngQeQG-11) 1. Settings: Opens the [settings](./settings.md) overlay. 2. Toggle theme: Toggles between light and dark themes. @@ -77,7 +77,7 @@ See the code tab for more information and other options available. ## Behavior -![Navigation menu overflow behavior](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1013-68267&mode=design&t=RG8M7S3eIKxiDqv5-11) +![Navigation menu overflow behavior](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1013-68267&mode=design&t=RG8M7S3eIKxiDqv5-11) - Navigation menu expands and collapses with a transition - The width of the collapse and expand state are fixed and cannot be configured diff --git a/packages/documentation/docs/controls/application-frame/_application_styleguide.md b/packages/documentation/docs/controls/application-frame/_application_styleguide.md index bd964c0278f..49bb0aaa95f 100644 --- a/packages/documentation/docs/controls/application-frame/_application_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_application_styleguide.md @@ -3,7 +3,7 @@ Application is a technical and infrastructural component without a direct visual ### Application switch -![Application switch and modal](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1665-19417&mode=design&t=I0iEEuzKJJPK4Sum-11) +![Application switch and modal](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1665-19417&mode=design&t=I0iEEuzKJJPK4Sum-11) 1. Application switch button opens the modal 2. Application switch modal with a list of applications diff --git a/packages/documentation/docs/controls/application-frame/_basic-navigation_styleguide.md b/packages/documentation/docs/controls/application-frame/_basic-navigation_styleguide.md index abbca9752b2..62d15abed7f 100644 --- a/packages/documentation/docs/controls/application-frame/_basic-navigation_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_basic-navigation_styleguide.md @@ -4,7 +4,7 @@ import Playground from '@site/src/components/Demo'; Basic navigation is a combination of essential infrastructure components forming the basic application layout structure. Alternatively, the [map navigation](./map-navigation.md) offers an additional but less flexible layout. The new [application](./application.md) component released February 2024 is even more flexible, has a modular approach and introduces new features. Hence, we highly recommend using the new application frame. -![Basic navigation overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=984-33226&mode=design&t=SxUA6AcHswBAiIzi-11) +![Basic navigation overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=984-33226&mode=design&t=SxUA6AcHswBAiIzi-11) Basic navigation has: 1. Application header @@ -13,7 +13,7 @@ Basic navigation has: ### Application header -![Application header](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=987-122161&mode=design&t=SxUA6AcHswBAiIzi-11) +![Application header](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=987-122161&mode=design&t=SxUA6AcHswBAiIzi-11) 4. Brand logo 5. Application name @@ -30,7 +30,7 @@ If the application is hosted inside a framework that comes with its own header, ## Behavior Basic navigation automatically adapts, by default, to the three breakpoints lg (large), md (medium) and sm (small). Depending on the breakpoint, the behavior of the navigation menu is different. -![Behavior at different breakpoints](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=984-57503&mode=design&t=SxUA6AcHswBAiIzi-11) +![Behavior at different breakpoints](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=984-57503&mode=design&t=SxUA6AcHswBAiIzi-11) ### 6. and 7. Breakpoint lg - `only screen and (min-width: 62em)` diff --git a/packages/documentation/docs/controls/application-frame/_content_styleguide.md b/packages/documentation/docs/controls/application-frame/_content_styleguide.md index 641c5c87a8c..d8afced96e4 100644 --- a/packages/documentation/docs/controls/application-frame/_content_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_content_styleguide.md @@ -3,7 +3,7 @@ import Playground from '@site/src/components/PlaygroundV2'; The content component is a simple layout component made for hosting content. -![application content](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1759-25130&mode=design&t=UPXhDWuRHtygtfFI-11) +![application content](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1759-25130&mode=design&t=UPXhDWuRHtygtfFI-11) The purple dotted line illustrates the extent of the content component. diff --git a/packages/documentation/docs/controls/application-frame/_map-navigation_styleguide.md b/packages/documentation/docs/controls/application-frame/_map-navigation_styleguide.md index 7e85ef56fe9..12e0d3949d5 100644 --- a/packages/documentation/docs/controls/application-frame/_map-navigation_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_map-navigation_styleguide.md @@ -1,7 +1,7 @@ Map navigation is a combination of infrastructural components that form a layout structure to present map-like content (geographical maps, P&I diagrams or other plans). It is supported by a collapsible context panel and an overlay can temporarily present additional information. Map navigation does not offer all features the [basic navigation](./basic-navigation.md) offers. The new [application](./application.md) component released February 2024 is even more flexible, has a modular approach and introduces new features. Hence, we highly recommend using the new application frame. -![Map navigation layout](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1020-71241&mode=design&t=Ntzn8IlSOlPey8s5-11) +![Map navigation layout](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1020-71241&mode=design&t=Ntzn8IlSOlPey8s5-11) 1. [App header](#app-header): Included in the context pane 2. [Navigation menu](./application-menu.md) diff --git a/packages/documentation/docs/controls/application-frame/_popover-news_styleguide.md b/packages/documentation/docs/controls/application-frame/_popover-news_styleguide.md index b4387ef19e2..c9ed624009c 100644 --- a/packages/documentation/docs/controls/application-frame/_popover-news_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_popover-news_styleguide.md @@ -1,6 +1,6 @@ Use the popover news component to present news and information when the application starts like release notes, new app features or marketing-related information. For Siemens applications, provide the information within the [About and legal overlay](./about-and-legal.md) as well. -![Popover news](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1013-70517&mode=design&t=Ntzn8IlSOlPey8s5-11) +![Popover news](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1013-70517&mode=design&t=Ntzn8IlSOlPey8s5-11) - (1) Header text - (2) Close button diff --git a/packages/documentation/docs/controls/application-frame/_settings_styleguide.md b/packages/documentation/docs/controls/application-frame/_settings_styleguide.md index dc460ddb33c..3f49a96d438 100644 --- a/packages/documentation/docs/controls/application-frame/_settings_styleguide.md +++ b/packages/documentation/docs/controls/application-frame/_settings_styleguide.md @@ -1,6 +1,6 @@ The settings component is an overlay that presents settings in a central location. It appears when users click on the "settings" icon (1). It overlays the current content and closing this overlay brings users back to the original content. -![Settings overlay](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1030-80408&mode=design&t=Ntzn8IlSOlPey8s5-11) +![Settings overlay](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1030-80408&mode=design&t=Ntzn8IlSOlPey8s5-11) - (1) Settings icon: opens and closes the settings overlay - (2) Content header: default string is "Settings" and can be replaced diff --git a/packages/documentation/docs/controls/buttons/_button_styleguide.md b/packages/documentation/docs/controls/buttons/_button_styleguide.md index 0b3958d6a9a..3891f9d1f6f 100644 --- a/packages/documentation/docs/controls/buttons/_button_styleguide.md +++ b/packages/documentation/docs/controls/buttons/_button_styleguide.md @@ -1,6 +1,6 @@ Buttons initiate actions, apply actions to selected objects and activate/deactivate functions. We typically use buttons to trigger an immediate action, and you can place them within dialogs, forms, modal windows and other containers. -![Overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1097-5037&mode=design&t=KAxDgJoFX436Uk0b-11) +![Overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1097-5037&mode=design&t=KAxDgJoFX436Uk0b-11) 1. Button label 2. Button icon @@ -34,7 +34,7 @@ Buttons initiate actions, apply actions to selected objects and activate/deactiv Buttons have six states: Default, hover, active, disabled, loading and focused. In a disabled state, buttons are visually displayed but don’t offer any user interaction. -![Button states](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=132-13020&mode=design&t=KAxDgJoFX436Uk0b-11) +![Button states](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=132-13020&mode=design&t=KAxDgJoFX436Uk0b-11) ## Dos and Don’ts diff --git a/packages/documentation/docs/controls/buttons/_dropdown-button_styleguide.md b/packages/documentation/docs/controls/buttons/_dropdown-button_styleguide.md index 181ba733df2..b6ee21a6e89 100644 --- a/packages/documentation/docs/controls/buttons/_dropdown-button_styleguide.md +++ b/packages/documentation/docs/controls/buttons/_dropdown-button_styleguide.md @@ -1,6 +1,6 @@ Dropdown buttons are button elements that allow users to select an action from a list of options by clicking on a button and revealing a dropdown. Clicking on one of the exposed options triggers the action. We typically use dropdown buttons when no default action is available. Dropdown buttons typically group similar or related actions. -![Overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1477-13932&mode=design&t=97WS5dUS2rk3MCp2-11) +![Overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1477-13932&mode=design&t=97WS5dUS2rk3MCp2-11) 1. Button container 2. Button label @@ -13,7 +13,7 @@ All the variants, options and states of the ix button component apply to the dro - **Label:** Set a label for the dropdown button. We typically use short labels including verbs. - **Placement:** Define where the dropdown appears when the button is active. Choose between different directions (top, bottom, left, right) and two options for alignment with the button (start, end). When there isn't enough space for the chosen placement, it's automatically corrected. -![Placement example](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1504-2203&mode=design&t=5MYmq6zAbfw7xIkC-11) +![Placement example](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1504-2203&mode=design&t=5MYmq6zAbfw7xIkC-11) 1. Bottom-end placement 2. Bottom-start placement diff --git a/packages/documentation/docs/controls/buttons/_icon-button_styleguide.md b/packages/documentation/docs/controls/buttons/_icon-button_styleguide.md index 3371aa7eeaf..b6fe6e032b2 100644 --- a/packages/documentation/docs/controls/buttons/_icon-button_styleguide.md +++ b/packages/documentation/docs/controls/buttons/_icon-button_styleguide.md @@ -1,6 +1,6 @@ Icon buttons are button elements containing only an icon and no text. Due to their small size, icon buttons are often used in complex layouts. We only use icon buttons if a well-known icon is available or the meaning of the icon metaphor is clear from the context. -![Overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1477%3A1714&mode=design&t=97WS5dUS2rk3MCp2-1) +![Overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1477-1714&mode=design&t=97WS5dUS2rk3MCp2-1) 1. Container 2. Icon diff --git a/packages/documentation/docs/controls/buttons/_link-button_styleguide.md b/packages/documentation/docs/controls/buttons/_link-button_styleguide.md index a43e8292b7b..3ccab530fce 100644 --- a/packages/documentation/docs/controls/buttons/_link-button_styleguide.md +++ b/packages/documentation/docs/controls/buttons/_link-button_styleguide.md @@ -1,6 +1,6 @@ Link buttons are simple button components that lead users to another location within the application or outside of it. Link buttons contain a chevron and a text label. -![Overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1506-4003&mode=design&t=5MYmq6zAbfw7xIkC-11) +![Overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1506-4003&mode=design&t=5MYmq6zAbfw7xIkC-11) 1. Chevron 2. Label @@ -26,7 +26,7 @@ Link buttons are simple button components that lead users to another location wi ## States Link buttons take five states: Default, hover, active, disabled and focused. On hover, the link destination is shown. In a disabled state, link buttons are visually displayed but don't offer any user interaction. -![States](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1507-9250&mode=design&t=5MYmq6zAbfw7xIkC-11) +![States](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1507-9250&mode=design&t=5MYmq6zAbfw7xIkC-11) ## Dos and Don'ts - Do use link buttons for navigation diff --git a/packages/documentation/docs/controls/buttons/_split-button_styleguide.md b/packages/documentation/docs/controls/buttons/_split-button_styleguide.md index 9e8848eb0d0..b149dbf8436 100644 --- a/packages/documentation/docs/controls/buttons/_split-button_styleguide.md +++ b/packages/documentation/docs/controls/buttons/_split-button_styleguide.md @@ -1,6 +1,6 @@ Split buttons are button elements that allow users to either trigger an action with one click or select an action from a list of options. They consist of two parts: a button labeled with text and/or an icon on the left and a dropdown button labeled with an icon on the right. We typically use split buttons when a default action is available but more options need to be offered. Split buttons group similar or related actions. -![Overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1480-30799&mode=design&t=97WS5dUS2rk3MCp2-11) +![Overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1480-30799&mode=design&t=97WS5dUS2rk3MCp2-11) 1. Button 2. Dropdown button @@ -15,7 +15,7 @@ All the variants, options and states of the ix button and the ix dropdown button - **Label:** Set a label for the button component (left side). We typically use short labels that contain a verb. - **Placement:** Define where the flyout appears which is triggered when the dropdown button is active. You can choose between different directions (top, bottom, left, right) and two options for alignment with the button (start, end). When there is not enough space for the chosen setting, the placement is corrected automatically. -![Placement example](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1504-2203&mode=design&t=5MYmq6zAbfw7xIkC-11) +![Placement example](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1504-2203&mode=design&t=5MYmq6zAbfw7xIkC-11) 1. Bottom-end placement 2. Bottom-start placement diff --git a/packages/documentation/docs/controls/buttons/_toggle-button_styleguide.md b/packages/documentation/docs/controls/buttons/_toggle-button_styleguide.md index 0c6ec52b4e4..911e99ac6b7 100644 --- a/packages/documentation/docs/controls/buttons/_toggle-button_styleguide.md +++ b/packages/documentation/docs/controls/buttons/_toggle-button_styleguide.md @@ -1,6 +1,6 @@ Toggle buttons are button elements which allow the user to activate/deactivate a function. Toggle buttons with and without text labels are available. We typically use toggle buttons within button groups when users can chose between more than two options or when two available options don't follow the on/off metaphor. -![Overview](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1480-33046&mode=design&t=iUJlfIvOwhKY3qk9-4) +![Overview](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1480-33046&mode=design&t=iUJlfIvOwhKY3qk9-4) Variants, options and states of the ix button and the ix icon button components apply. Only additional, deviating or detailing specifications are listed here. diff --git a/packages/documentation/docs/guidelines/_theme-switching_styleguide.md b/packages/documentation/docs/guidelines/_theme-switching_styleguide.md index cc3e62466ec..d0185305c15 100644 --- a/packages/documentation/docs/guidelines/_theme-switching_styleguide.md +++ b/packages/documentation/docs/guidelines/_theme-switching_styleguide.md @@ -2,7 +2,7 @@ When working with our Figma library, you can apply a theme to either an entire page or an individual element, such as a frame or component: -![Applying a theme](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2232-192&mode=design&t=C6IjeY71MP4uA7vZ-4) +![Applying a theme](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2232-192&mode=design&t=C6IjeY71MP4uA7vZ-4) ## Applying one theme to a whole page 1. First ensure there are no selected elements on the page by pressing the "Esc" key to deselect them. @@ -21,7 +21,7 @@ For more information see the official [Figma documentation](https://help.figma.c # Changing theme variables -![Changing theme variables](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2232-101&mode=design&t=C6IjeY71MP4uA7vZ-4) +![Changing theme variables](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=2232-101&mode=design&t=C6IjeY71MP4uA7vZ-4) If want to adapt the classic theme to your own brand design, follow these steps to modify the colors and other theme values within the Figma library: diff --git a/packages/documentation/docs/icon-library/_icon_styleguide.md b/packages/documentation/docs/icon-library/_icon_styleguide.md index c0e291c6416..d2779e98280 100644 --- a/packages/documentation/docs/icon-library/_icon_styleguide.md +++ b/packages/documentation/docs/icon-library/_icon_styleguide.md @@ -40,40 +40,40 @@ These guidelines extend the basic guidelines on [Siemens brandville](https://bra ## 1. Icon grid size - The basic icon grid size is 24✕24 -![Basic grid](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=801-253&mode=design&t=LqIxNidruCmTfYDF-4) +![Basic grid](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=801-253&mode=design&t=LqIxNidruCmTfYDF-4) ## 2. In-app icon design grid - Use the design grid component “Icon Design Grid” from the “Assets” library as background for creating new icons - The design grid helps to limit the icon boundaries to achieve an evenly optical weight of different icon shapes - The clearance zone (red area) should not be touched by the icon (for exceptions see below) -- The lines represent the boundaries of key shapes or just mark the center ![In-app icon design grid](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=801-856&mode=design&t=LqIxNidruCmTfYDF-4) +- The lines represent the boundaries of key shapes or just mark the center ![In-app icon design grid](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=801-856&mode=design&t=LqIxNidruCmTfYDF-4) - Use the portrait key shape for vertically oriented shapes -![Portrait key shapes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-17540&mode=design&t=LqIxNidruCmTfYDF-4) +![Portrait key shapes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-17540&mode=design&t=LqIxNidruCmTfYDF-4) - Use the landscape key shape for horizontally oriented shapes -![Landscape key shapes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-19334&mode=design&t=LqIxNidruCmTfYDF-4) +![Landscape key shapes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-19334&mode=design&t=LqIxNidruCmTfYDF-4) - Use the square key shape for square icons -![Square key shapes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23090&mode=design&t=LqIxNidruCmTfYDF-4) +![Square key shapes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23090&mode=design&t=LqIxNidruCmTfYDF-4) - Use the circle key shape for round icons -![Circle key shapes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23091&mode=design&t=LqIxNidruCmTfYDF-4) +![Circle key shapes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23091&mode=design&t=LqIxNidruCmTfYDF-4) ### Exceptions to the clearance zone - Icons with attributes: Icons can be enhanced with attributes. These attributes are allowed to touch the clearance zone but should keep at least 1px space to the outer boundary -![Exception 1: icon attributes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23092&mode=design&t=LqIxNidruCmTfYDF-4) +![Exception 1: icon attributes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23092&mode=design&t=LqIxNidruCmTfYDF-4) - Optical fixes: Shapes are allowed to touch the clearance zone to equalize visual effects with pointed shapes or single strokes -![Exception 2: optical fixes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23093&mode=design&t=LqIxNidruCmTfYDF-4) +![Exception 2: optical fixes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=802-23093&mode=design&t=LqIxNidruCmTfYDF-4) ## 3. Light weight icons - Prefer strokes and outlines over filled shapes - Please provide a filled variant of the icon as well, where possible and potentially useful. It can be used in situations when more visual weight is required. The filled variant gets the name suffix “-filled”. -![Normal and filled variant](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=808-23094&mode=design&t=LqIxNidruCmTfYDF-4) +![Normal and filled variant](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=808-23094&mode=design&t=LqIxNidruCmTfYDF-4) ## 4. Simple and geometric @@ -83,14 +83,14 @@ These guidelines extend the basic guidelines on [Siemens brandville](https://bra - Prefer sharp corners and straight lines - Use rounded corners and endings only to support the characteristics of the represented object -![Simple and geometric shapes](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=808-23095&mode=design&t=LqIxNidruCmTfYDF-4) +![Simple and geometric shapes](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=808-23095&mode=design&t=LqIxNidruCmTfYDF-4) ## 5. Stroke widths - Default stroke width is 2px - In case icon readability can't be guaranteed otherwise, stroke widths of 1.5px or even 1x are also allowed. Before doing that please make sure all rules from section 4 are followed. -![Stroke widths](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=809-23096&mode=design&t=LqIxNidruCmTfYDF-4) +![Stroke widths](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=809-23096&mode=design&t=LqIxNidruCmTfYDF-4) ## 6. Gaps @@ -98,7 +98,7 @@ These guidelines extend the basic guidelines on [Siemens brandville](https://bra - Use 2px gaps to visually separate two shapes from each other - Avoid unsafe patterns of alternating between set pixel and no pixel. In the worst case such shapes cannot be visually distinguished anymore. -![Gaps and unsafe pattern](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=809-23097&mode=design&t=LqIxNidruCmTfYDF-4) +![Gaps and unsafe pattern](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=809-23097&mode=design&t=LqIxNidruCmTfYDF-4) ## 7. Strikethrough, cuts and cutouts @@ -106,7 +106,7 @@ These guidelines extend the basic guidelines on [Siemens brandville](https://bra - A diagonal strikethrough starts from top left and ends at the bottom right (refers to the crossbar of letter “N” for “No”), followed by a 2px space above right - Use at least 1px space for cuts or cutouts (be aware of “unsafe patterns”, see 6.) -![Strikethroughs and gaps](https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=810-23098&mode=design&t=LqIxNidruCmTfYDF-4) +![Strikethroughs and gaps](https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=810-23098&mode=design&t=LqIxNidruCmTfYDF-4) ## 8. The technical finish diff --git a/packages/documentation/docs/roadmap.md b/packages/documentation/docs/roadmap.md index f2c9423c566..d2eda048823 100644 --- a/packages/documentation/docs/roadmap.md +++ b/packages/documentation/docs/roadmap.md @@ -6,7 +6,7 @@ title: Roadmap # Siemens Industrial Experience Roadmap -![Roadmap](https://www.figma.com/file/YSvLeddwfyjLx8G5QWOTCH/Documentation-Visuals?type=design&node-id=694-130&mode=design&t=7oYieUSvKMurFcpx-11) +![Roadmap](https://www.figma.com/design/YSvLeddwfyjLx8G5QWOTCH/Documentation-Visuals?type=design&node-id=694-130&mode=design&t=7oYieUSvKMurFcpx-11)

We’re constantly improving our design system for you by extending the component library, developing our user guidance and ensuring the system is reliable and easy to use. diff --git a/packages/figma-plugin/package.json b/packages/figma-plugin/package.json index c90b9d74913..b326411faf4 100644 --- a/packages/figma-plugin/package.json +++ b/packages/figma-plugin/package.json @@ -12,10 +12,12 @@ "unist-util-visit": "^5.0.0" }, "scripts": { - "build": "tsc" + "build": "tsc", + "test": "vitest" }, "devDependencies": { "ts-node": "^10.9.1", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "vitest": "^1.3.1" } } diff --git a/packages/figma-plugin/src/figma.test.ts b/packages/figma-plugin/src/figma.test.ts new file mode 100644 index 00000000000..5b6b6550ff5 --- /dev/null +++ b/packages/figma-plugin/src/figma.test.ts @@ -0,0 +1,26 @@ +/* + * SPDX-FileCopyrightText: 2024 Siemens AG + * + * SPDX-License-Identifier: MIT + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +import { expect, test } from 'vitest'; +import { getFigmaMeta } from './figma'; + +test('url with file url', () => { + const meta = getFigmaMeta({ + url: 'https://www.figma.com/file/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1504-2203&mode=design&t=5MYmq6zAbfw7xIkC-11)', + }); + expect(meta.fileName).toBe('wEptRgAezDU1z80Cn3eZ0o'); + expect(meta.nodeId).toBe('1504-2203'); +}); + +test('url with design url', () => { + const meta = getFigmaMeta({ + url: 'https://www.figma.com/design/wEptRgAezDU1z80Cn3eZ0o/iX-Pattern-Illustrations?type=design&node-id=1504-2203&mode=design&t=5MYmq6zAbfw7xIkC-11)', + }); + expect(meta.fileName).toBe('wEptRgAezDU1z80Cn3eZ0o'); + expect(meta.nodeId).toBe('1504-2203'); +}); diff --git a/packages/figma-plugin/src/figma.ts b/packages/figma-plugin/src/figma.ts index 67807ac0f82..71b4fe9d2d9 100644 --- a/packages/figma-plugin/src/figma.ts +++ b/packages/figma-plugin/src/figma.ts @@ -34,14 +34,15 @@ async function getImageResource( figmaToken: string ): Promise> { const ids = nodeIds.join(','); - const response = await fetch( - `https://api.figma.com/v1/images/${fileName}?ids=${ids}`, - { - headers: { - 'X-FIGMA-TOKEN': figmaToken, - }, - } - ); + + const url = `https://api.figma.com/v1/images/${fileName}?ids=${ids}`; + const response = await fetch(url, { + headers: { + 'X-FIGMA-TOKEN': figmaToken, + }, + }); + + console.log('Fetch image resource for', url); if (response.status !== 200) { console.log( @@ -57,7 +58,7 @@ async function getImageResource( return data.images; } -function getFigmaMeta(node: FigmaNode): { +export function getFigmaMeta(node: FigmaNode): { fileName: string; nodeId: string; } { @@ -65,10 +66,18 @@ function getFigmaMeta(node: FigmaNode): { const urlPath = url.pathname; const urlPaths = urlPath.split('/'); const fileIndex = urlPaths.findIndex((segment) => segment === 'file'); + const designIndex = urlPaths.findIndex((segment) => segment === 'design'); const branchIndex = urlPaths.findIndex((segment) => segment === 'branch'); - const fileName = - branchIndex !== -1 ? urlPaths[branchIndex + 1] : urlPaths[fileIndex + 1]; + let file = ''; + + if (designIndex !== -1 && fileIndex === -1) { + file = urlPaths[designIndex + 1]; + } else { + file = urlPaths[fileIndex + 1]; + } + + const fileName = branchIndex !== -1 ? urlPaths[branchIndex + 1] : file; const nodeId = url.searchParams.get('node-id'); return { diff --git a/packages/figma-plugin/tsconfig.json b/packages/figma-plugin/tsconfig.json index e74ff693dd5..e3593640f7e 100644 --- a/packages/figma-plugin/tsconfig.json +++ b/packages/figma-plugin/tsconfig.json @@ -18,5 +18,9 @@ }, "include": [ "src/**/*" + ], + "exclude": [ + "node_modules", + "src/**/*.test.ts", ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0b896ac4e64..ad092e232ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -579,6 +579,9 @@ importers: typescript: specifier: ^5.2.2 version: 5.2.2 + vitest: + specifier: ^1.3.1 + version: 1.3.1(@types/node@20.8.9)(happy-dom@14.7.1)(jsdom@20.0.3)(less@4.2.0)(sass@1.69.5)(stylus@0.59.0)(terser@5.22.0) packages/html-test-app: devDependencies: @@ -18090,7 +18093,7 @@ snapshots: acorn-globals@7.0.1: dependencies: acorn: 8.11.3 - acorn-walk: 8.2.0 + acorn-walk: 8.3.2 acorn-import-assertions@1.9.0(acorn@8.10.0): dependencies: @@ -18108,14 +18111,9 @@ snapshots: dependencies: acorn: 8.10.0 - acorn-jsx@5.3.2(acorn@8.11.3): - dependencies: - acorn: 8.11.3 - acorn-jsx@5.3.2(acorn@8.12.0): dependencies: acorn: 8.12.0 - optional: true acorn-walk@7.2.0: {} @@ -18131,8 +18129,7 @@ snapshots: acorn@8.11.3: {} - acorn@8.12.0: - optional: true + acorn@8.12.0: {} address@1.2.2: {} @@ -24393,8 +24390,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.0 + acorn-jsx: 5.3.2(acorn@8.12.0) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.0 micromark-extension-mdx-md: 2.0.0 @@ -24718,7 +24715,7 @@ snapshots: mlly@1.6.0: dependencies: - acorn: 8.11.3 + acorn: 8.12.0 pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.4.0 @@ -28989,7 +28986,7 @@ snapshots: vite@5.1.4(@types/node@20.8.9)(less@4.2.0)(sass@1.69.5)(stylus@0.59.0)(terser@5.22.0): dependencies: esbuild: 0.19.12 - postcss: 8.4.35 + postcss: 8.4.38 rollup: 4.12.0 optionalDependencies: '@types/node': 20.8.9 From 723cc59a5992cfd02e0123389fc83f1e3e22e3a0 Mon Sep 17 00:00:00 2001 From: Daniel Leroux Date: Fri, 21 Jun 2024 12:33:45 +0200 Subject: [PATCH 3/3] docs: update figma error image --- .../documentation/static/img/figma_error.png | Bin 111696 -> 5738 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/documentation/static/img/figma_error.png b/packages/documentation/static/img/figma_error.png index 0bc1df5dd4c355cb2de4d33bbe403555e9f83c1b..04e45c23f09c93e3e52e1eb3a2dbf26e2c4a0019 100644 GIT binary patch literal 5738 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 fd;7Zv$$R@r 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

{@Hhx7AN*TtOsDhZr%t+c$A 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

)7Rih!KBK~WMwIbjVw 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